|
42524
|
909
|
15
|
2026-04-17T07:27:12.790951+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776410832790_m2.jpg...
|
Firefox
|
Workers | Datadog — Work
|
True
|
app.datadoghq.com/dashboard/8dc-jtf-87d/workers?fr app.datadoghq.com/dashboard/8dc-jtf-87d/workers?fromUser=false&refresh_mode=paused&tpl_var_environment[0]=prod&from_ts=1776027600000&to_ts=1776200399999&live=false...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Workers | Datadog
Platform Sprint 2 Q2 - Platform Workers | Datadog
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
New Tab
New Tab
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
CloudWatch | us-east-2
CloudWatch | us-east-2
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | eu-west-1
Console Home | Console Home | eu-west-1
New Tab
New Tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to main content
Skip to main content
Home
Hide menu
Minimize menu
Go to…
Go to…
Bits AI
Bits AI
Dashboards
Dashboards
Monitoring
Monitoring
Incident Response
Incident Response
Automation
Automation
Infrastructure
Infrastructure
Cloud Cost
Cloud Cost
APM
APM
Digital Experience
Digital Experience
Software Delivery
Software Delivery
Security
Security
Data Observability
Data Observability
AI Observability
AI Observability
Errors
Errors
Metrics
Metrics
Logs
Logs
Integrations
Integrations
Profile
[EMAIL]
Jiminny, Inc.
Support
Support
NEW Help
NEW
Help
Favorite this dashboard
Workers
Workers
Edit dashboard title, description & tags
Show sharing menu
Show sharing menu...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Workers | Datadog","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.0890625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.08263889,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.015625,"top":0.09236111,"width":0.11875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.11171875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.53398436,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudWatch | us-east-2","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.0484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Console Home | Console Home | eu-west-1","depth":4,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Console Home | Console Home | eu-west-1","depth":5,"bounds":{"left":0.015625,"top":0.26319444,"width":0.0875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.015625,"top":0.29166666,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.31180555,"width":0.08710937,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to main content","depth":7,"bounds":{"left":0.0953125,"top":0.047916666,"width":0.00390625,"height":0.0069444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to main content","depth":8,"bounds":{"left":0.09726562,"top":0.05138889,"width":0.056640625,"height":0.015277778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Home","depth":10,"bounds":{"left":0.09375,"top":0.045138888,"width":0.0625,"height":0.09583333},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Hide menu","depth":10,"bounds":{"left":0.09609375,"top":0.049305554,"width":0.0078125,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Minimize menu","depth":10,"bounds":{"left":0.14609376,"top":0.049305554,"width":0.0078125,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Go to…","depth":9,"bounds":{"left":0.09375,"top":0.14513889,"width":0.0625,"height":0.025},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Go to…","depth":13,"bounds":{"left":0.109375,"top":0.15138888,"width":0.0171875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Bits AI","depth":11,"bounds":{"left":0.09375,"top":0.18125,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bits AI","depth":14,"bounds":{"left":0.109375,"top":0.1875,"width":0.015234375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Dashboards","depth":11,"bounds":{"left":0.09375,"top":0.20625,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dashboards","depth":14,"bounds":{"left":0.109375,"top":0.2125,"width":0.02890625,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Monitoring","depth":11,"bounds":{"left":0.09375,"top":0.23125,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Monitoring","depth":14,"bounds":{"left":0.109375,"top":0.2375,"width":0.0265625,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Incident Response","depth":11,"bounds":{"left":0.09375,"top":0.25625,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Incident Response","depth":14,"bounds":{"left":0.109375,"top":0.2625,"width":0.044140626,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Automation","depth":11,"bounds":{"left":0.09375,"top":0.28125,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Automation","depth":14,"bounds":{"left":0.109375,"top":0.2875,"width":0.028125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Infrastructure","depth":11,"bounds":{"left":0.09375,"top":0.31736112,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Infrastructure","depth":14,"bounds":{"left":0.109375,"top":0.3236111,"width":0.033203125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Cloud Cost","depth":11,"bounds":{"left":0.09375,"top":0.34236112,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Cloud Cost","depth":14,"bounds":{"left":0.109375,"top":0.34861112,"width":0.02578125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"APM","depth":11,"bounds":{"left":0.09375,"top":0.3673611,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APM","depth":14,"bounds":{"left":0.109375,"top":0.37361112,"width":0.0109375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Digital Experience","depth":11,"bounds":{"left":0.09375,"top":0.3923611,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Digital Experience","depth":14,"bounds":{"left":0.109375,"top":0.3986111,"width":0.04296875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Software Delivery","depth":11,"bounds":{"left":0.09375,"top":0.4173611,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Software Delivery","depth":14,"bounds":{"left":0.109375,"top":0.4236111,"width":0.041796874,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security","depth":11,"bounds":{"left":0.09375,"top":0.44236112,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security","depth":14,"bounds":{"left":0.109375,"top":0.4486111,"width":0.019140625,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Data Observability","depth":11,"bounds":{"left":0.09375,"top":0.46736112,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Data Observability","depth":14,"bounds":{"left":0.109375,"top":0.47361112,"width":0.044140626,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"AI Observability","depth":11,"bounds":{"left":0.09375,"top":0.4923611,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI Observability","depth":14,"bounds":{"left":0.109375,"top":0.49861112,"width":0.0375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Errors","depth":11,"bounds":{"left":0.09375,"top":0.52847224,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Errors","depth":14,"bounds":{"left":0.109375,"top":0.5347222,"width":0.014453125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Metrics","depth":11,"bounds":{"left":0.09375,"top":0.5534722,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Metrics","depth":14,"bounds":{"left":0.109375,"top":0.55972224,"width":0.017578125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Logs","depth":11,"bounds":{"left":0.09375,"top":0.5784722,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Logs","depth":14,"bounds":{"left":0.109375,"top":0.5847222,"width":0.011328125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Integrations","depth":11,"bounds":{"left":0.09375,"top":0.90625,"width":0.0625,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Integrations","depth":14,"bounds":{"left":0.109375,"top":0.9125,"width":0.029296875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Profile","depth":11,"bounds":{"left":0.09375,"top":0.93125,"width":0.0625,"height":0.025},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":15,"bounds":{"left":0.11015625,"top":0.9444444,"width":0.06367187,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny, Inc.","depth":16,"bounds":{"left":0.11015625,"top":0.94375,"width":0.02421875,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Support","depth":8,"bounds":{"left":0.09375,"top":0.9652778,"width":0.03125,"height":0.03472221},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Support","depth":10,"bounds":{"left":0.10117187,"top":0.9847222,"width":0.01640625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"NEW Help","depth":8,"bounds":{"left":0.125,"top":0.9652778,"width":0.03125,"height":0.03472221},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"NEW","depth":10,"bounds":{"left":0.1359375,"top":0.9583333,"width":0.009375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Help","depth":10,"bounds":{"left":0.1359375,"top":0.9847222,"width":0.009375,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Favorite this dashboard","depth":11,"bounds":{"left":0.1625,"top":0.058333334,"width":0.00703125,"height":0.0125},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Workers","depth":12,"bounds":{"left":0.17226562,"top":0.054166667,"width":0.031640626,"height":0.020833334},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Workers","depth":13,"bounds":{"left":0.17226562,"top":0.054166667,"width":0.031640626,"height":0.020833334},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit dashboard title, description & tags","depth":12,"bounds":{"left":0.20390625,"top":0.05486111,"width":0.0109375,"height":0.019444445},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show sharing menu","depth":10,"bounds":{"left":0.75039065,"top":0.05486111,"width":0.030859375,"height":0.019444445},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show sharing menu","depth":11,"bounds":{"left":0.75039065,"top":0.05486111,"width":0.030859375,"height":0.019444445},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
5062209615449782324
|
3906899328251408070
|
app_switch
|
accessibility
|
NULL
|
Workers | Datadog
Platform Sprint 2 Q2 - Platform Workers | Datadog
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
New Tab
New Tab
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
CloudWatch | us-east-2
CloudWatch | us-east-2
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | eu-west-1
Console Home | Console Home | eu-west-1
New Tab
New Tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to main content
Skip to main content
Home
Hide menu
Minimize menu
Go to…
Go to…
Bits AI
Bits AI
Dashboards
Dashboards
Monitoring
Monitoring
Incident Response
Incident Response
Automation
Automation
Infrastructure
Infrastructure
Cloud Cost
Cloud Cost
APM
APM
Digital Experience
Digital Experience
Software Delivery
Software Delivery
Security
Security
Data Observability
Data Observability
AI Observability
AI Observability
Errors
Errors
Metrics
Metrics
Logs
Logs
Integrations
Integrations
Profile
[EMAIL]
Jiminny, Inc.
Support
Support
NEW Help
NEW
Help
Favorite this dashboard
Workers
Workers
Edit dashboard title, description & tags
Show sharing menu
Show sharing menu...
|
NULL
|
|
42555
|
908
|
41
|
2026-04-17T07:27:59.682205+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776410879682_m1.jpg...
|
iTerm2
|
EU (ssh)
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Thu Apr 16 15:43:43 on console
Poetry Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
%
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $
Menu
⌥1 DOCKER (-zsh)
Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod
(lukas@jiminny-prod-bastion) Verification code:
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)
* Documentation: [URL_WITH_CREDENTIALS]
Menu
⌥2 PROD (ssh)
Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ eu
(lukas@jiminny-eu-bastion) Verification code:
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1047-aws x86_64)
* Documentation: [URL_WITH_CREDENTIALS]
Menu
⌥3 EU (ssh)
Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥4 STAGE (-zsh)
Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥5 QA (-zsh)
Last login: Thu Apr 16 15:48:07 on ttys004
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥6 FE (-zsh)
Last login: Thu Apr 16 15:48:07 on ttys005
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥7 EXT (-zsh)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
-zsh
Close Tab
⌥⌘1
EU (ssh)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n% \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $","depth":4,"bounds":{"left":0.0,"top":0.072222225,"width":0.4888889,"height":0.92777777},"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n% \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $","is_focused":true},{"role":"AXButton","text":"Menu","depth":3,"bounds":{"left":0.48472223,"top":0.08944444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥1 DOCKER (-zsh)","depth":3,"bounds":{"left":0.01875,"top":0.09,"width":0.4625,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod\n(lukas@jiminny-prod-bastion) Verification code: \nWelcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Fri Apr 17 05:56:21 UTC 2026\n\n System load: 0.0 Processes: 123\n Usage of /: 59.3% of 7.57GB Users logged in: 1\n Memory usage: 34% IPv4 address for eth0: 10.30.45.167\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n42 updates can be applied immediately.\n10 of these updates are standard security updates.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu Apr 16 06:55:09 2026 from 212.39.71.189\nlukas@jiminny-prod-bastion:~$","depth":5,"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod\n(lukas@jiminny-prod-bastion) Verification code: \nWelcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Fri Apr 17 05:56:21 UTC 2026\n\n System load: 0.0 Processes: 123\n Usage of /: 59.3% of 7.57GB Users logged in: 1\n Memory usage: 34% IPv4 address for eth0: 10.30.45.167\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n42 updates can be applied immediately.\n10 of these updates are standard security updates.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu Apr 16 06:55:09 2026 from 212.39.71.189\nlukas@jiminny-prod-bastion:~$","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98541665,"top":0.08944444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥2 PROD (ssh)","depth":4,"bounds":{"left":0.51875,"top":0.09,"width":0.46319443,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ eu\n(lukas@jiminny-eu-bastion) Verification code: \nWelcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1047-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Fri Apr 17 05:56:31 UTC 2026\n\n System load: 0.0 Processes: 118\n Usage of /: 58.0% of 7.57GB Users logged in: 1\n Memory usage: 18% IPv4 address for eth0: 10.20.163.228\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n90 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu Apr 16 06:55:03 2026 from 212.39.71.189\nlukas@jiminny-eu-bastion:~$","depth":5,"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ eu\n(lukas@jiminny-eu-bastion) Verification code: \nWelcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1047-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Fri Apr 17 05:56:31 UTC 2026\n\n System load: 0.0 Processes: 118\n Usage of /: 58.0% of 7.57GB Users logged in: 1\n Memory usage: 18% IPv4 address for eth0: 10.20.163.228\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n90 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu Apr 16 06:55:03 2026 from 212.39.71.189\nlukas@jiminny-eu-bastion:~$","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98541665,"top":0.23944445,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥3 EU (ssh)","depth":4,"bounds":{"left":0.51875,"top":0.24,"width":0.46319443,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5,"top":0.43222222,"width":0.48958334,"height":0.12222222},"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98541665,"top":0.40944445,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥4 STAGE (-zsh)","depth":4,"bounds":{"left":0.51875,"top":0.41,"width":0.46319443,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5,"top":0.5822222,"width":0.48958334,"height":0.12222222},"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98541665,"top":0.5594444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥5 QA (-zsh)","depth":4,"bounds":{"left":0.51875,"top":0.56,"width":0.46319443,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:48:07 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5,"top":0.7322222,"width":0.48958334,"height":0.12222222},"value":"Last login: Thu Apr 16 15:48:07 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98541665,"top":0.70944446,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥6 FE (-zsh)","depth":4,"bounds":{"left":0.51875,"top":0.71,"width":0.46319443,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:48:07 on ttys005\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5,"top":0.8622222,"width":0.48958334,"height":0.13777778},"value":"Last login: Thu Apr 16 15:48:07 on ttys005\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98541665,"top":0.85944444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥7 EXT (-zsh)","depth":4,"bounds":{"left":0.51875,"top":0.86,"width":0.46319443,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.140625,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.14479166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.28125,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.28541666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.421875,"top":0.05888889,"width":0.140625,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.42604166,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.5625,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.56666666,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Review screenpipe usage and Boosteroid integration (claude)","depth":2,"bounds":{"left":0.7027778,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.70694447,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.84305555,"top":0.05888889,"width":0.14027777,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.8472222,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.9548611,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"EU (ssh)","depth":1,"bounds":{"left":0.47916666,"top":0.033333335,"width":0.04097222,"height":0.017777778},"role_description":"text"}]...
|
5599336940198058142
|
-3205698547093837805
|
app_switch
|
accessibility
|
NULL
|
Last login: Thu Apr 16 15:43:43 on console
Poetry Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
%
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $
Menu
⌥1 DOCKER (-zsh)
Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod
(lukas@jiminny-prod-bastion) Verification code:
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)
* Documentation: [URL_WITH_CREDENTIALS]
Menu
⌥2 PROD (ssh)
Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ eu
(lukas@jiminny-eu-bastion) Verification code:
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1047-aws x86_64)
* Documentation: [URL_WITH_CREDENTIALS]
Menu
⌥3 EU (ssh)
Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥4 STAGE (-zsh)
Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥5 QA (-zsh)
Last login: Thu Apr 16 15:48:07 on ttys004
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥6 FE (-zsh)
Last login: Thu Apr 16 15:48:07 on ttys005
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥7 EXT (-zsh)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
-zsh
Close Tab
⌥⌘1
EU (ssh)...
|
NULL
|
|
42556
|
909
|
29
|
2026-04-17T07:27:59.682221+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776410879682_m2.jpg...
|
iTerm2
|
EU (ssh)
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Thu Apr 16 15:43:43 on console
Poetry Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
%
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $
Menu
⌥1 DOCKER (-zsh)
Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod
(lukas@jiminny-prod-bastion) Verification code:
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)
* Documentation: [URL_WITH_CREDENTIALS]
Menu
⌥2 PROD (ssh)
Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ eu
(lukas@jiminny-eu-bastion) Verification code:
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1047-aws x86_64)
* Documentation: [URL_WITH_CREDENTIALS]
Menu
⌥3 EU (ssh)
Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥4 STAGE (-zsh)
Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥5 QA (-zsh)
Last login: Thu Apr 16 15:48:07 on ttys004
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥6 FE (-zsh)
Last login: Thu Apr 16 15:48:07 on ttys005
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥7 EXT (-zsh)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
-zsh
Close Tab
⌥⌘1
EU (ssh)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n% \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.275,"height":-0.045138836},"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n% \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $","is_focused":true},{"role":"AXButton","text":"Menu","depth":3,"bounds":{"left":0.5058594,"top":1.0,"width":0.005859375,"height":-0.05590272},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥1 DOCKER (-zsh)","depth":3,"bounds":{"left":0.24375,"top":1.0,"width":0.26015624,"height":-0.056249976},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod\n(lukas@jiminny-prod-bastion) Verification code: \nWelcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Fri Apr 17 05:56:21 UTC 2026\n\n System load: 0.0 Processes: 123\n Usage of /: 59.3% of 7.57GB Users logged in: 1\n Memory usage: 34% IPv4 address for eth0: 10.30.45.167\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n42 updates can be applied immediately.\n10 of these updates are standard security updates.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu Apr 16 06:55:09 2026 from 212.39.71.189\nlukas@jiminny-prod-bastion:~$","depth":5,"bounds":{"left":0.5144531,"top":0.6326389,"width":0.27539062,"height":0.36736113},"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod\n(lukas@jiminny-prod-bastion) Verification code: \nWelcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Fri Apr 17 05:56:21 UTC 2026\n\n System load: 0.0 Processes: 123\n Usage of /: 59.3% of 7.57GB Users logged in: 1\n Memory usage: 34% IPv4 address for eth0: 10.30.45.167\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n42 updates can be applied immediately.\n10 of these updates are standard security updates.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu Apr 16 06:55:09 2026 from 212.39.71.189\nlukas@jiminny-prod-bastion:~$","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.7875,"top":1.0,"width":0.005859375,"height":-0.05590272},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥2 PROD (ssh)","depth":4,"bounds":{"left":0.525,"top":1.0,"width":0.26054686,"height":-0.056249976},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ eu\n(lukas@jiminny-eu-bastion) Verification code: \nWelcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1047-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Fri Apr 17 05:56:31 UTC 2026\n\n System load: 0.0 Processes: 118\n Usage of /: 58.0% of 7.57GB Users logged in: 1\n Memory usage: 18% IPv4 address for eth0: 10.20.163.228\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n90 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu Apr 16 06:55:03 2026 from 212.39.71.189\nlukas@jiminny-eu-bastion:~$","depth":5,"bounds":{"left":0.5144531,"top":0.7513889,"width":0.27539062,"height":0.2486111},"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ eu\n(lukas@jiminny-eu-bastion) Verification code: \nWelcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1047-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Fri Apr 17 05:56:31 UTC 2026\n\n System load: 0.0 Processes: 118\n Usage of /: 58.0% of 7.57GB Users logged in: 1\n Memory usage: 18% IPv4 address for eth0: 10.20.163.228\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n90 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu Apr 16 06:55:03 2026 from 212.39.71.189\nlukas@jiminny-eu-bastion:~$","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥3 EU (ssh)","depth":4,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥4 STAGE (-zsh)","depth":4,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥5 QA (-zsh)","depth":4,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:48:07 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"value":"Last login: Thu Apr 16 15:48:07 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥6 FE (-zsh)","depth":4,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:48:07 on ttys005\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"value":"Last login: Thu Apr 16 15:48:07 on ttys005\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥7 EXT (-zsh)","depth":4,"role_description":"text"},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.23320313,"top":1.0,"width":0.07910156,"height":-0.03680551},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.23554687,"top":1.0,"width":0.00625,"height":-0.039583325},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.31230468,"top":1.0,"width":0.07910156,"height":-0.03680551},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.31464845,"top":1.0,"width":0.00625,"height":-0.039583325},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.39140624,"top":1.0,"width":0.07910156,"height":-0.03680551},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.39375,"top":1.0,"width":0.00625,"height":-0.039583325},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.4705078,"top":1.0,"width":0.07910156,"height":-0.03680551},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.47285157,"top":1.0,"width":0.00625,"height":-0.039583325},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.54960936,"top":1.0,"width":0.07890625,"height":-0.03680551},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.55195314,"top":1.0,"width":0.00625,"height":-0.039583325},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"✳ Review screenpipe usage and Boosteroid integration (claude)","depth":2,"bounds":{"left":0.6285156,"top":1.0,"width":0.07890625,"height":-0.03680551},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.6308594,"top":1.0,"width":0.00625,"height":-0.039583325},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7074219,"top":1.0,"width":0.07890625,"height":-0.03680551},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.7097656,"top":1.0,"width":0.00625,"height":-0.039583325},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7703125,"top":1.0,"width":0.021875,"height":-0.02013886},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"EU (ssh)","depth":1,"bounds":{"left":0.50273436,"top":1.0,"width":0.023046875,"height":-0.020833373},"role_description":"text"}]...
|
5599336940198058142
|
-3205698547093837805
|
app_switch
|
accessibility
|
NULL
|
Last login: Thu Apr 16 15:43:43 on console
Poetry Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
%
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $
Menu
⌥1 DOCKER (-zsh)
Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod
(lukas@jiminny-prod-bastion) Verification code:
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)
* Documentation: [URL_WITH_CREDENTIALS]
Menu
⌥2 PROD (ssh)
Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ eu
(lukas@jiminny-eu-bastion) Verification code:
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1047-aws x86_64)
* Documentation: [URL_WITH_CREDENTIALS]
Menu
⌥3 EU (ssh)
Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥4 STAGE (-zsh)
Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥5 QA (-zsh)
Last login: Thu Apr 16 15:48:07 on ttys004
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥6 FE (-zsh)
Last login: Thu Apr 16 15:48:07 on ttys005
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $
Menu
⌥7 EXT (-zsh)
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
-zsh
Close Tab
-zsh
Close Tab
✳ Review screenpipe usage and Boosteroid integration (claude)
Close Tab
-zsh
Close Tab
⌥⌘1
EU (ssh)...
|
NULL
|
|
42573
|
908
|
53
|
2026-04-17T07:28:35.856865+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776410915856_m1.jpg...
|
Slack
|
* jiminny-x-integration-app (Channel) - Jiminny In * jiminny-x-integration-app (Channel) - Jiminny Inc - Slack...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Galya Dimitrova
Nikolay Nikolov
Stoyan Tanev
Vasil Vasilev
Nikolay Ivanov
Aneliya Angelova
Ves
Steliyan Georgiev
Jira Cloud...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.009722223,"top":0.08777778,"width":0.022222223,"height":0.035555556},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"bounds":{"left":0.009722223,"top":0.14555556,"width":0.022222223,"height":0.035555556},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"bounds":{"left":0.009722223,"top":0.20333333,"width":0.022222223,"height":0.035555556},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.048611112,"top":0.07777778,"width":0.036111113,"height":0.075555556},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.05625,"top":0.13,"width":0.020833334,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.048611112,"top":0.15333334,"width":0.036111113,"height":0.075555556},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.058333334,"top":0.20555556,"width":0.016666668,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.048611112,"top":0.22888888,"width":0.036111113,"height":0.075555556},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.05277778,"top":0.28111112,"width":0.027083334,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.048611112,"top":0.30444443,"width":0.036111113,"height":0.075555556},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.058333334,"top":0.35666665,"width":0.015972223,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.048611112,"top":0.38,"width":0.036111113,"height":0.075555556},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.057638887,"top":0.43222222,"width":0.018055556,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.048611112,"top":0.45555556,"width":0.036111113,"height":0.075555556},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.056944445,"top":0.50777775,"width":0.01875,"height":0.015555556},"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.11875,"top":0.14,"width":0.039583333,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.11875,"top":0.1711111,"width":0.036805555,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.11875,"top":0.20222223,"width":0.038194444,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.11875,"top":0.23333333,"width":0.06111111,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.11875,"top":0.26444444,"width":0.050694443,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.12986112,"top":0.39555556,"width":0.09166667,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.12986112,"top":0.42666668,"width":0.093055554,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.12986112,"top":0.5,"width":0.046527777,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.12986112,"top":0.5311111,"width":0.025694445,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.12986112,"top":0.56222224,"width":0.038194444,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.12986112,"top":0.5933333,"width":0.072222225,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.12986112,"top":0.6244444,"width":0.057638887,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.12986112,"top":0.65555555,"width":0.055555556,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"bounds":{"left":0.12986112,"top":0.68666667,"width":0.04027778,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.12986112,"top":0.7177778,"width":0.034027778,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"bounds":{"left":0.12986112,"top":0.7488889,"width":0.061805554,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.12986112,"top":0.78,"width":0.048611112,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.12986112,"top":0.8111111,"width":0.072916664,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.12986112,"top":0.8422222,"width":0.08055556,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.12986112,"top":0.87333333,"width":0.035416666,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.12986112,"top":0.90444446,"width":0.036805555,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.12986112,"top":0.9355556,"width":0.05138889,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.12986112,"top":0.96666664,"width":0.036111113,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"role_description":"text"}]...
|
-1006631154684321121
|
-4058174490921821175
|
app_switch
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Galya Dimitrova
Nikolay Nikolov
Stoyan Tanev
Vasil Vasilev
Nikolay Ivanov
Aneliya Angelova
Ves
Steliyan Georgiev
Jira Cloud
iTerm2ShellEditViewSessionScriptsProfilesWindowHelpDOCKER₴81DEV (-zsh)₴2APP (-zsh)L1DOCKER (docker-compose)elasticsearch{"type""server""timestamp""INFO""2026-04-17T07:28:22,091Z","component" :"o.e. e.NodeEnvironment""cluster.name": "docker-cluster""node.name":"e802ad473a4f""message": "heap sizeers[true]"}[700mb],compressed ordinary object pointelasticsearch"INFO"I {"type":"server""timestamp""2026-04-17T07:28:22,256Z","level":"component" :"o.e.n.Node""cluster.name" :"docker-cluster""node.name":"e80Zad473a4f""message":"node name[e802ad473a4f],node ID[e2ZKzgw4Q4aCf2w51jWr1A], clustername [docker-cluster],roles[transform,master,remote_cluster_client, data,mldata_content,data_hot,data_warm,ingest]"redis1:M 27 Apr 2026 87:28:28.232 , DB Loaded from appendonly file: 14.601secondsredis1 1:M 17 Apr 2026 07:28:28.232 * Ready toaccept connectionselasticsearch"timestamp":"INFO","2026-04-17T07:28:29,740Z","component" :"o.e.x.m.p.l.CppLogMessageHandler"er"node.name":"e802ad473a4f""message","[controller/213] (Main.cc@114] controlleBackend Chapter • in 2 mDOCKER (docker-compose)-zsh84-zshО 885XIPROD (ssh)Run'do-release-upgrade'to upgrade to it.* Review screenpipe U...*** System restart required ***Lastlogin: Thu Apr 16 06:55:092026from 212.39.71.189lukas@jiminny-prod-bastion:~$ 0T3 EU (ssh)Newrelease'24.04.4 LTS'Run'do-release-upgrade'available.to upgrade to it.*** System restart required ***Lastlogin: Thu Apr 16 06:55:03 2026 from 212.39.71.189lukas@jiminny-eu-bastion:~$ |100% C• *6Fri 17 Apr 10:28:35-zshT81*7PROD$1PS31NeSlack"IN.name""e802ad473a4f""message""using discovery type [single-node]seed hosts providers [settings]" }elasticsearch1 {"type":"server""timestamp":"WARN","2026-04-17T07:28:33,367Z","level":"component":"o.e.g.DanglingIndicesState""cluster.name":"docker-cluster"node.name":"e802ad473a4f""message":"gateway.auto_import_dangling_indices is disabled, dangling indices will not be automatically detected or imported and must be managed manually"}elasticsearch"INFO"I {"type": "server""timestamp" :"component":"2026-04-17707:28:34,469Z""o.e.n.Node""cluster.name" :"docker-cluster""node. name":Zad473a4f""message":"initialized" }elasticsearch"INFO"I {"type":"component" :"o.e.n.Node""timestamp":"cluster.name":2ad473a4f","message":"starting}"2026-04-17T07:28:34,470Z""docker-cluster", "node.name" :elasticsearch1 {"type":"server""timestamp" :"INFO""component" :"o.e.t.TransportService""2026-04-17T07:28:34,818Z","level":"cluster.name":"docker-cluster""node.name":"e802ad473a4f","message":"publish_address {[IP_ADDRESS]:9300}, bound_addresses{[: :]:9300}" }View in Docker Desktop@ View ConfigEnable WatchLast login: Thu Apr 16 15:43:43 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetrycould not find a pyproject.tomlfile in /Users/lukas or its parents$XT6FE (-zsh)Last login: Thu Apr 16 15:48:07 on ttys004Poetry could not find a pyproject.toml file in /Users/lukas or its parents RONTENDPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IX W ExT(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsLukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|...
|
NULL
|
|
42574
|
909
|
35
|
2026-04-17T07:28:35.829863+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776410915829_m2.jpg...
|
Slack
|
* jiminny-x-integration-app (Channel) - Jiminny In * jiminny-x-integration-app (Channel) - Jiminny Inc - Slack...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Galya Dimitrova
Nikolay Nikolov
Stoyan Tanev
Vasil Vasilev
Nikolay Ivanov
Aneliya Angelova
Ves
Steliyan Georgiev...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.23867187,"top":1.0,"width":0.0125,"height":-0.05486107},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"bounds":{"left":0.23867187,"top":1.0,"width":0.0125,"height":-0.090972185},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.26054686,"top":1.0,"width":0.0203125,"height":-0.048611164},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.26484376,"top":1.0,"width":0.01171875,"height":-0.08124995},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.26054686,"top":1.0,"width":0.0203125,"height":-0.0958333},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.3,"top":1.0,"width":0.022265624,"height":-0.087499976},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"}]...
|
-2614572194735315463
|
-4060426290718958583
|
app_switch
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Galya Dimitrova
Nikolay Nikolov
Stoyan Tanev
Vasil Vasilev
Nikolay Ivanov
Aneliya Angelova
Ves
Steliyan Georgiev
Firefox0001FileEditiViewPlatform Sprint 2 Q2 - Platform Te[SRD-6793] Les Mills activity type:® Problem loading pageSymfony|Component\Debug\ExcerCloudWatch | us-east-2Z Configure SSH access to multiple@ Console Home | Console Home | elNew Tab+ New TabHistoryBookmarksProfilesToolsWindow Helpdoo.uev..minny.com/cashoodraBackend Chapter • in 2m100% C2Fri 17 Apr 10:28:35Looks like there's a problem with this siteFirefox can't connect to the server at app.dev.jiminny.comWhat can you do about it?Try connecting on a different device. Check your modem or router. Disconnectand reconnect to Wi-Fi.Try Again...
|
NULL
|
|
42586
|
909
|
40
|
2026-04-17T07:29:12.255366+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776410952255_m2.jpg...
|
PhpStorm
|
faVsco.js – RequestGenerateReportJob.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
34...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.03046875,"top":0.017361112,"width":0.0453125,"height":0.022222223},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.14960937,"height":0.022222223},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.78515625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.803125,"top":0.017361112,"width":0.09765625,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9007813,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9140625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9273437,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96015626,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9734375,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9867188,"top":0.017361112,"width":0.013281226,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.049609374,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.4265625,"top":0.19513889,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.43789062,"top":0.19375,"width":0.00859375,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.4464844,"top":0.19375,"width":0.008203125,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Execute","depth":4,"bounds":{"left":0.45664063,"top":0.10763889,"width":0.01015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"bounds":{"left":0.46679688,"top":0.10763889,"width":0.01015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"bounds":{"left":0.4796875,"top":0.10763889,"width":0.01015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"bounds":{"left":0.48984376,"top":0.10763889,"width":0.01015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open Query Execution Settings…","depth":4,"bounds":{"left":0.5,"top":0.10763889,"width":0.01015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"bounds":{"left":0.51289064,"top":0.10763889,"width":0.01015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"bounds":{"left":0.5257813,"top":0.10763889,"width":0.028515626,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"bounds":{"left":0.5570313,"top":0.10763889,"width":0.01015625,"height":0.016666668},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"bounds":{"left":0.56992185,"top":0.10763889,"width":0.034765624,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"bounds":{"left":0.6917969,"top":0.10763889,"width":0.033203125,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.049609374,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"34","depth":4,"bounds":{"left":0.65664065,"top":0.12916666,"width":0.012109375,"height":0.013194445},"role_description":"text"}]...
|
3105355567320262980
|
-5903908238265193908
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
34...
|
NULL
|
|
42602
|
910
|
0
|
2026-04-17T07:30:04.772876+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411004772_m1.jpg...
|
Slack
|
engineering (Channel) - Jiminny Inc - Slack
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Galya Dimitrova
Nikolay Nikolov
Stoyan Tanev
Vasil Vasilev
Nikolay Ivanov
Aneliya Angelova
Ves...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.009722223,"top":0.08777778,"width":0.022222223,"height":0.035555556},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"bounds":{"left":0.009722223,"top":0.14555556,"width":0.022222223,"height":0.035555556},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"bounds":{"left":0.009722223,"top":0.20333333,"width":0.022222223,"height":0.035555556},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.048611112,"top":0.07777778,"width":0.036111113,"height":0.075555556},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.05625,"top":0.13,"width":0.020833334,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.048611112,"top":0.15333334,"width":0.036111113,"height":0.075555556},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.058333334,"top":0.20555556,"width":0.016666668,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.048611112,"top":0.22888888,"width":0.036111113,"height":0.075555556},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.05277778,"top":0.28111112,"width":0.027083334,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.048611112,"top":0.30444443,"width":0.036111113,"height":0.075555556},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.058333334,"top":0.35666665,"width":0.015972223,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.048611112,"top":0.38,"width":0.036111113,"height":0.075555556},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.057638887,"top":0.43222222,"width":0.018055556,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.048611112,"top":0.45555556,"width":0.036111113,"height":0.075555556},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.056944445,"top":0.50777775,"width":0.01875,"height":0.015555556},"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.11875,"top":0.14,"width":0.038194444,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.11875,"top":0.1711111,"width":0.036805555,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.11875,"top":0.20222223,"width":0.038194444,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.11875,"top":0.23333333,"width":0.06111111,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.11875,"top":0.26444444,"width":0.050694443,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"bounds":{"left":0.12986112,"top":0.39555556,"width":0.09166667,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.12986112,"top":0.42666668,"width":0.093055554,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.12986112,"top":0.5,"width":0.046527777,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.12986112,"top":0.5311111,"width":0.025694445,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.12986112,"top":0.56222224,"width":0.038194444,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.12986112,"top":0.5933333,"width":0.072222225,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.12986112,"top":0.6244444,"width":0.057638887,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.12986112,"top":0.65555555,"width":0.054166667,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"bounds":{"left":0.12986112,"top":0.68666667,"width":0.04027778,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.12986112,"top":0.7177778,"width":0.034027778,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"bounds":{"left":0.12986112,"top":0.7488889,"width":0.061805554,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.12986112,"top":0.78,"width":0.048611112,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.12986112,"top":0.8111111,"width":0.072916664,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.12986112,"top":0.8422222,"width":0.08055556,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.12986112,"top":0.87333333,"width":0.035416666,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.12986112,"top":0.90444446,"width":0.036805555,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.12986112,"top":0.9355556,"width":0.05138889,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.12986112,"top":0.96666664,"width":0.036111113,"height":0.02},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":23,"role_description":"text"}]...
|
8479909427200111690
|
-4060426290719089656
|
app_switch
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Galya Dimitrova
Nikolay Nikolov
Stoyan Tanev
Vasil Vasilev
Nikolay Ivanov
Aneliya Angelova
Ves
+SlackFileEditViewELHomeDMsActivityFilesLater..•More+Jiminny ...= UnreadsThreadsHuddlesDrafts & sentDirectoriesExternal connections Starredjiminny-x-integrati...& platform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# supportGoHistoryWindowHelp→Search Jiminny Incsos# engineering8246 0• Messages7 CanvasO FilesMore ~+Today ~CircleCl APP8:52 AM2 PRs with vulnerability fixes are ready forreviewPlease take a look at the code and confirmthat everything works properly on yourlocal machine or on a planet environmentPull requests (jiminny/app)• #11975 fix(security): npm dependencyupdates - 2026-04-16 ( secfix/npm-20260416)• #11970 fix(security): composerdependency updates - 2026-04-15(secfix/composer-20260415 )View workflow runIlian Kyuchukov 10:28 AMWe have a broken loop of syncing Stagechanges for two clients, which results innon-stop requests to Prophet (which costsmoney).Has there been any changes to the logic?opportunity_stagesopportunity_id = 7594349 has 10267recordsMessage #engineering+AaBackend Chapter • now100% |8Fri 17 Apr 10:30:04‹er-compose)84-zsh®X.PROD (ssh)Run 'do-release-upgrade' to upBackend Chapternow - 10:30-11:30[URL_WITH_CREDENTIALS] UX L3 EU (ssh)New release '24.04.4 LTS' available.Run 'do-release-upgrade' to upgrade to it.*** System restart required ***Last login: Thu Apr 16 06:55:03 2026 from 212.39.71.189lukas@jiminny-eu-bastion:~$ |X T4 STAGE (-zsh)Last login: Thu Apr 16 15:43:43 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsSTAGEPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny$T5 QA (-zsh)Last login: Thu Apr 16 15:43:43 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX 16 FE (-zsh)Last login: Thu Apr 16 15:48:07 on ttys004Poetry could not find a pyproject.toml file in /Users/lukas or its parents RONTENDPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IX Y7 EXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsLukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|U...
|
NULL
|
|
42603
|
911
|
1
|
2026-04-17T07:30:04.765009+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411004765_m2.jpg...
|
Slack
|
engineering (Channel) - Jiminny Inc - Slack
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Galya Dimitrova
Nikolay Nikolov
Stoyan Tanev
Vasil Vasilev
Nikolay Ivanov
Aneliya Angelova
Ves...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.23867187,"top":1.0,"width":0.0125,"height":-0.05486107},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"bounds":{"left":0.23867187,"top":1.0,"width":0.0125,"height":-0.090972185},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.26054686,"top":1.0,"width":0.0203125,"height":-0.048611164},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.26484376,"top":1.0,"width":0.01171875,"height":-0.08124995},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.26054686,"top":1.0,"width":0.0203125,"height":-0.0958333},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"bounds":{"left":0.3,"top":1.0,"width":0.021484375,"height":-0.087499976},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":23,"role_description":"text"}]...
|
8479909427200111690
|
-4060426290719089656
|
app_switch
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Galya Dimitrova
Nikolay Nikolov
Stoyan Tanev
Vasil Vasilev
Nikolay Ivanov
Aneliya Angelova
Ves
PhpStormFileFditViewNavigateCodeLaravelPetactorToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny kProject vEids.txt=infection.son.distM+ INSTALL.mdM+ INTERNAL WEBHOOK SETUPiminny_storageM+ licenses.mdIM MakefileU package-lock.json= phpstan.neon.distE phpstan-baseline.neor<> phounit xml1d raw sal_querv.salM+ KEADME.mO{o sonar-project.properties=test.py<> Untitled Diagram.xmlus vetur.config.jsM+ WEBHOOK_FILTERING_IMPLE›Ib External Librariesv E Scratches and Consolesv M Database ConsolesvA-Uc consoe -u4 DEAL RISKS [EU]L DI EUIA EU [EU]v 4 iminny@localhostd console liminny@localfc Di liminny@localhost)c HS_local liminny@locald sr yiminny@localhost)d zono_dev yiminny @locaV & PROD& consoe PRODIA console 1 [PROD1d DI [PROD> LQALQAi> L QAI PRODv L STAGINGd console STAGING¿ console 1 STAGNGIId uranus ISl AGING>@ Extensionsv MScratches= phostorm_shortcuts.txt= scratch.txtUr scratch 1.isonUr scratch 2.isonUr scratch 3.isor= scratch_4.txtphp scratch_5.phpph9 scratch_6.phpG scratch_7.json( stage2.jsonE° test<test.htmlphr tmp.ohp(C AutomatedReportsService.phpC) SendReportJob.phpC SendReportMailJob.php(©) ReportController.phpTokenBuilder.phpC TeamSetupController.phppnp apl.ono1 Filesystem.pnpC AutomatedReportsCommand.pnp© AsKJiminnyReportsController.phpC AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.phpC Team.php(C AutomatedReportsRepository.php© CreateHeldActivityEvent.php©) TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.php© UserPilotActivityListener.php© ActivityLogged.phpAutomatedRenortscallbackService.ono© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php x(C AutomatedReportResult.php(C AutomatedReport.phpclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUniqueB2AY1761931Y4195196199207209210211212213218249private function createResultso// handle multiple media types// create PDF as primary resultsth1s->reportResult = sreportservice->createReportResultautomatedReport: sautomatedReport,data: l"media_type" => Automatedkeporusservice:.MEULA_lYPE_PUr,if (in_array( needle: AutomatedReportsService::NEDIA_TYPE_PODCAST, $mediaTypes,strict: true))sthis->reportResultPodcast = SreportService->createReportResultoautomatedReport: $automatedReport.data:'medla_type' => AutomatedReportsservice::MEDIA_TYPE_PODCAST,'parent_1d => Sthis->reportResult->getido,usaoeorivate Tunccion checkaccivicylount rroonecullent soropnecullent, array soayloaa,Loccerintertacezusagesprivate function failReport(int $reason): void1f (1sset(sthis->reportResult)) isthis->reportresult->update(L"suacus = AUcomatedReporckesULt:.SIA/US_FALLEU."reason" = sreason,if isset(sthis->reportResultPodcast) ‹sthis->reportResultPodcast->updated'status' => AutomatedReportResult::STATUS_ FATLED.'reason' => sreason,J9HHelper code will nelp IDt lo understand vour Laravelapo code. Generale Don't snow Anymore loday 8.0g= custom.log= laravel.loge SF (iminny@localhostU scratch_1.isonV connect.vueV Onboard.vueHs local liminnyalocalnost< console EUiiii crm configurations [EU] X¿ console IPRODIe console [STAGINGrow vX:Auto vDDLY- WHERE id = 367E- ORDER BY367Iuuid UUID with time-low and time-high swapped) ÷fa0cf643-d30e-43b8-ab3d-1fe1825460oe team_1dLonotifiable_user_id! providerI• editionW instance!_ is_sandboxI versionD installed_app_version•_ sync_metadatasync objectsauto svnc activity0 crm_provider_idW crm_base_uru• last synced atI leads svnced atMaccounts sunced atШ contacts_synced_atopportunities synced_atIn contact roles synced atw over_quota_atW ap1_disabled_atsettings! opportunity_assignment_rule! opportunity_max_value•_ opportunity_max_ageILo opportunity value field id! trigger_assignment_ruleso_ score_transcripu•_ softphone_override_prospect• default currencyIn created atW updacea_au459<null>hubspotChULL<null><hULl3364459sensat.co2026-04-17 07:14:23ShULLcnuue<nulil><null>SnULl<nULl><null>""opportunity sync_ period":"om","oopen-recencly-upaaced6958000.0032K191<null>GBP2025-04-02 11:33:462026-04-17 07:14-23lobl: Backend Chapter • now100% 145Fri 17 Apr 10:30:04AutomatedReportsCommandTest-CascadeAutomated Report Retishow me exactyl where do we set result as sent or failedThere are 3 places total:searcheastatus. FAILED and perormedl other queryFocusina onlv on AutomatedReportResult status transitions.STATUS SENT - set in SendReportMailJob after the email is delivered:M SendReportMailJob.php:135-14g1t srenort-sstatus le= AutomaredRenortResult.STATIS SENIT*cache:: lock("report-status-i$this->reportUuid,, 5)->block(2, function () use (Sreport) ‹prevort-ruvualerl'status' = AutomatedReportResult::STATUS SENT,"sent_at = nowl),STATUS_FAILED - set in 3 places:1. SendReportJob::failed() - when the dispatch/pre-send phase talls terminally (null path, Semissing, etc.:SendReportJob.php:175-179public function failed (Throwable Sexception): voidAutomatedReportResult::whereRaw('uuid = uuid to bin(?)'. [$this→>reportUuidl)→updatelL status → AutonatedKeportResuLciiSlAlUS FALLeU,2. RequestGenerateReportJob - when report generation fails (before it even reaches sending):• RequestGenerateReportJob.php:252-264$this->reportResult->update(["status = Automatedkeportkesult::sIAlUs_FALLEb,'reason" = $reason,J9HRequestcenerateaskaminnvkevorto —same, Tor ASk Jiminny vartant• RequestGenerateAskJiminnyReportJob.php:203-207sunus-> reportresursuodarel'status' = AutomatedReportResult::STATUS_FATLED,'reason" = $reason,J9HWnal "1 file +16>Ask anything (&+L)+ <> Code Claude Sonnet 4.6Reject allAccept allSUM: Not enouch valueswinasur leams...
|
NULL
|
|
42612
|
911
|
4
|
2026-04-17T07:30:38.244201+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411038244_m2.jpg...
|
Firefox
|
Meet — Work
|
True
|
meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovali meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.com...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Workers | Datadog
Platform Sprint 2 Q2 - Platform Workers | Datadog
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Problem loading page
Problem loading page
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
CloudWatch | us-east-2
CloudWatch | us-east-2
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | eu-west-1
Console Home | Console Home | eu-west-1
New Tab
New Tab
Meet
Meet
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Workers | Datadog","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.0890625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.08263889,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.015625,"top":0.09236111,"width":0.11875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.11171875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Problem loading page","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Problem loading page","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.04453125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.53398436,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudWatch | us-east-2","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.0484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Console Home | Console Home | eu-west-1","depth":4,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Console Home | Console Home | eu-west-1","depth":5,"bounds":{"left":0.015625,"top":0.26319444,"width":0.0875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.015625,"top":0.29166666,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Meet","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Meet","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.01015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.31666666,"width":0.009375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.3402778,"width":0.08710937,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
8041461921330471129
|
8516443259623647940
|
app_switch
|
accessibility
|
NULL
|
Workers | Datadog
Platform Sprint 2 Q2 - Platform Workers | Datadog
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Problem loading page
Problem loading page
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
CloudWatch | us-east-2
CloudWatch | us-east-2
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | eu-west-1
Console Home | Console Home | eu-west-1
New Tab
New Tab
Meet
Meet
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)...
|
NULL
|
|
42613
|
910
|
7
|
2026-04-17T07:30:35.552907+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411035552_m1.jpg...
|
Firefox
|
SQLite Web: db.sqlite — Personal
|
True
|
http://100.73.206.126:8767/frames_fts/
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+FirefoxFileEditViewHistoryEDHomeDMsActivityFilesL +FirefoxFileEditViewHistoryEDHomeDMsActivityFilesLater..•More+Jiminny ...= UnreadsThreadsHuddlesDrafts & sentDirectoriesExternal connections Starredjiminny-x-integrati...& platform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# supportBookmarksProfilesToolsWindowHelpSearch Jiminny Inc# engineering8246 0Messages7 CanvasO FilesMore ~+Today ~CircleCl APP8:52 AM2 PRs with vulnerability fixes are ready forreviewPlease take a look at the code and confirmthat everything works properly on yourlocal machine or on a planet environmentPull requests (jiminny/app)• #11975 fix(security): npm dependencyupdates - 2026-04-16 ( secfix/npm-20260416)• #11970 fix(security): composerdependency updates - 2026-04-15(secfix/composer-20260415 )View workflow runIlian Kyuchukov 210:28 AMWe have a broken loop of syncing Stagechanges for two clients, which results innon-stop requests to Prophet (which costsmoney).Has there been any changes to the logic?opportunity_stagesopportunity_id = 7594349 has 10267recordsMessage #engineering+Aa→0 lila Backend Chapter • now100% <47Fri 17 Apr 10:30:35<er-compose)84-zsh®• ₴5PROD (ssh)Run 'do-release-upgrade' to upgrade to it.L₴81HPROD*** System restart required ***Last login: Thu Apr 16 06:55:09 2026 from 212.39.71.189lukas@jiminny-prod-bastion:~$ UX L3 EU (ssh)New release '24.04.4 LTS' available.Run 'do-release-upgrade' to upgrade to it.*** System restart required ***Last login: Thu Apr 16 06:55:03 2026 from 212.39.71.189lukas@jiminny-eu-bastion:~$ |X T4 STAGE (-zsh)Last login: Thu Apr 16 15:43:43 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsSTAGEPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny$T5 QA (-zsh)Last login: Thu Apr 16 15:43:43 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX T6 FE (-zsh)Last login: Thu Apr 16 15:48:07 on ttys004Poetry could not find a pyproject.toml file in /Users/lukas or its parents RONTENDPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IX Y7 EXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents‹as@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|...
|
NULL
|
6654712782313015590
|
NULL
|
app_switch
|
ocr
|
NULL
|
+FirefoxFileEditViewHistoryEDHomeDMsActivityFilesL +FirefoxFileEditViewHistoryEDHomeDMsActivityFilesLater..•More+Jiminny ...= UnreadsThreadsHuddlesDrafts & sentDirectoriesExternal connections Starredjiminny-x-integrati...& platform-inner-teamChannels# ai-chapter# alerts# backend# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# supportBookmarksProfilesToolsWindowHelpSearch Jiminny Inc# engineering8246 0Messages7 CanvasO FilesMore ~+Today ~CircleCl APP8:52 AM2 PRs with vulnerability fixes are ready forreviewPlease take a look at the code and confirmthat everything works properly on yourlocal machine or on a planet environmentPull requests (jiminny/app)• #11975 fix(security): npm dependencyupdates - 2026-04-16 ( secfix/npm-20260416)• #11970 fix(security): composerdependency updates - 2026-04-15(secfix/composer-20260415 )View workflow runIlian Kyuchukov 210:28 AMWe have a broken loop of syncing Stagechanges for two clients, which results innon-stop requests to Prophet (which costsmoney).Has there been any changes to the logic?opportunity_stagesopportunity_id = 7594349 has 10267recordsMessage #engineering+Aa→0 lila Backend Chapter • now100% <47Fri 17 Apr 10:30:35<er-compose)84-zsh®• ₴5PROD (ssh)Run 'do-release-upgrade' to upgrade to it.L₴81HPROD*** System restart required ***Last login: Thu Apr 16 06:55:09 2026 from 212.39.71.189lukas@jiminny-prod-bastion:~$ UX L3 EU (ssh)New release '24.04.4 LTS' available.Run 'do-release-upgrade' to upgrade to it.*** System restart required ***Last login: Thu Apr 16 06:55:03 2026 from 212.39.71.189lukas@jiminny-eu-bastion:~$ |X T4 STAGE (-zsh)Last login: Thu Apr 16 15:43:43 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsSTAGEPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny$T5 QA (-zsh)Last login: Thu Apr 16 15:43:43 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX T6 FE (-zsh)Last login: Thu Apr 16 15:48:07 on ttys004Poetry could not find a pyproject.toml file in /Users/lukas or its parents RONTENDPoetry could not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ IX Y7 EXT (-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsEXTENSIONPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents‹as@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|...
|
NULL
|
|
42632
|
910
|
16
|
2026-04-17T07:31:00.383830+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411060383_m1.jpg...
|
PhpStorm
|
faVsco.js – crm_configurations [EU]
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459
459
0
<null>
<null>
0
hubspot
hubspot
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
0
0
0
2
2
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
1
1
0
1...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"367","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"367","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"459","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"459","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"hubspot","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"hubspot","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"1","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1","depth":6,"role_description":"cell"}]...
|
-3578410907215782618
|
-5975965832303121844
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459
459
0
<null>
<null>
0
hubspot
hubspot
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
0
0
0
2
2
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
1
1
0
1...
|
NULL
|
|
42633
|
911
|
15
|
2026-04-17T07:31:00.371688+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411060371_m2.jpg...
|
PhpStorm
|
faVsco.js – crm_configurations [EU]
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459
459
0
<null>
<null>
0
hubspot
hubspot
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
0
0
0
2
2
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
1
1
0
1
1
0...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.03046875,"top":0.017361112,"width":0.0453125,"height":0.022222223},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.14960937,"height":0.022222223},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.78515625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.803125,"top":0.017361112,"width":0.09765625,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9007813,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9140625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9273437,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96015626,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9734375,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9867188,"top":0.017361112,"width":0.013281226,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.049609374,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.4265625,"top":0.19513889,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.43789062,"top":0.19375,"width":0.00859375,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.4464844,"top":0.19375,"width":0.008203125,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"367","depth":6,"bounds":{"left":0.62226564,"top":0.16527778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"367","depth":7,"bounds":{"left":0.62226564,"top":0.16527778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":6,"bounds":{"left":0.62226564,"top":0.18402778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":7,"bounds":{"left":0.62226564,"top":0.18402778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"459","depth":6,"bounds":{"left":0.62226564,"top":0.20277777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"459","depth":7,"bounds":{"left":0.62226564,"top":0.20277777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.22152779,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.22152779,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"hubspot","depth":6,"bounds":{"left":0.62226564,"top":0.24027778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"hubspot","depth":7,"bounds":{"left":0.62226564,"top":0.24027778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.25902778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.25902778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.2777778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.2777778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"bounds":{"left":0.62226564,"top":0.29652777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"bounds":{"left":0.62226564,"top":0.29652777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.62226564,"top":0.31527779,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.62226564,"top":0.31527779,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.33402777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.33402777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1","depth":6,"bounds":{"left":0.62226564,"top":0.35277778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"1","depth":7,"bounds":{"left":0.62226564,"top":0.35277778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1","depth":6,"bounds":{"left":0.62226564,"top":0.3715278,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"1","depth":7,"bounds":{"left":0.62226564,"top":0.3715278,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-692209472861957455
|
-5975965832437339572
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459
459
0
<null>
<null>
0
hubspot
hubspot
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
0
0
0
2
2
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
1
1
0
1
1
0...
|
NULL
|
|
42636
|
910
|
18
|
2026-04-17T07:31:03.602598+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411063602_m1.jpg...
|
Firefox
|
Problem loading page — Work
|
True
|
app.dev.jiminny.com/dashboard
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Workers | Datadog
Platform Sprint 2 Q2 - Platform Workers | Datadog
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Problem loading page
Problem loading page
Close tab
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
CloudWatch | us-east-2
CloudWatch | us-east-2
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | eu-west-1
Console Home | Console Home | eu-west-1
New Tab
New Tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Looks like there’s a problem with this site
Looks like there’s a problem with this site
Firefox can’t connect to the server at
app.dev.jiminny.com
What can you do about it?
What can you do about it?
Try connecting on a different device. Check your modem or router. Disconnect and reconnect to Wi-Fi.
Try Again
Try Again...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Workers | Datadog","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Problem loading page","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Problem loading page","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudWatch | us-east-2","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Console Home | Console Home | eu-west-1","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Console Home | Console Home | eu-west-1","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Looks like there’s a problem with this site","depth":8,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Looks like there’s a problem with this site","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox can’t connect to the server at","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.dev.jiminny.com","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"What can you do about it?","depth":8,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What can you do about it?","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Try connecting on a different device. Check your modem or router. Disconnect and reconnect to Wi-Fi.","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Try Again","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Try Again","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
3195799025668992871
|
-129341850238868796
|
app_switch
|
accessibility
|
NULL
|
Workers | Datadog
Platform Sprint 2 Q2 - Platform Workers | Datadog
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Problem loading page
Problem loading page
Close tab
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
CloudWatch | us-east-2
CloudWatch | us-east-2
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | eu-west-1
Console Home | Console Home | eu-west-1
New Tab
New Tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Looks like there’s a problem with this site
Looks like there’s a problem with this site
Firefox can’t connect to the server at
app.dev.jiminny.com
What can you do about it?
What can you do about it?
Try connecting on a different device. Check your modem or router. Disconnect and reconnect to Wi-Fi.
Try Again
Try Again...
|
NULL
|
|
42637
|
911
|
17
|
2026-04-17T07:31:03.594152+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411063594_m2.jpg...
|
Firefox
|
Problem loading page — Work
|
True
|
app.dev.jiminny.com/dashboard
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Workers | Datadog
Platform Sprint 2 Q2 - Platform Workers | Datadog
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Problem loading page
Problem loading page
Close tab
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
CloudWatch | us-east-2
CloudWatch | us-east-2
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | eu-west-1
Console Home | Console Home | eu-west-1
New Tab
New Tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Looks like there’s a problem with this site
Looks like there’s a problem with this site
Firefox can’t connect to the server at
app.dev.jiminny.com
What can you do about it?
What can you do about it?
Try connecting on a different device. Check your modem or router. Disconnect and reconnect to Wi-Fi.
Try Again
Try Again...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Workers | Datadog","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.0890625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.08263889,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.015625,"top":0.09236111,"width":0.11875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.11171875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Problem loading page","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Problem loading page","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.04453125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.14583333,"width":0.009375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.53398436,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudWatch | us-east-2","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.0484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Console Home | Console Home | eu-west-1","depth":4,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Console Home | Console Home | eu-west-1","depth":5,"bounds":{"left":0.015625,"top":0.26319444,"width":0.0875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.015625,"top":0.29166666,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.31180555,"width":0.08710937,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Looks like there’s a problem with this site","depth":8,"bounds":{"left":0.47226563,"top":0.16041666,"width":0.215625,"height":0.020833334},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Looks like there’s a problem with this site","depth":9,"bounds":{"left":0.47226563,"top":0.16041666,"width":0.17226562,"height":0.020833334},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox can’t connect to the server at","depth":9,"bounds":{"left":0.47226563,"top":0.19236112,"width":0.10078125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.dev.jiminny.com","depth":10,"bounds":{"left":0.57304686,"top":0.19236112,"width":0.05859375,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"What can you do about it?","depth":8,"bounds":{"left":0.47226563,"top":0.22638889,"width":0.215625,"height":0.014583333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"What can you do about it?","depth":9,"bounds":{"left":0.47226563,"top":0.22638889,"width":0.08164062,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Try connecting on a different device. Check your modem or router. Disconnect and reconnect to Wi-Fi.","depth":9,"bounds":{"left":0.47226563,"top":0.24652778,"width":0.21054688,"height":0.02638889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Try Again","depth":9,"bounds":{"left":0.64882815,"top":0.28333333,"width":0.0390625,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Try Again","depth":11,"bounds":{"left":0.6550781,"top":0.2875,"width":0.0265625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
3195799025668992871
|
-129341850238868796
|
app_switch
|
accessibility
|
NULL
|
Workers | Datadog
Platform Sprint 2 Q2 - Platform Workers | Datadog
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Problem loading page
Problem loading page
Close tab
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
CloudWatch | us-east-2
CloudWatch | us-east-2
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | eu-west-1
Console Home | Console Home | eu-west-1
New Tab
New Tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Looks like there’s a problem with this site
Looks like there’s a problem with this site
Firefox can’t connect to the server at
app.dev.jiminny.com
What can you do about it?
What can you do about it?
Try connecting on a different device. Check your modem or router. Disconnect and reconnect to Wi-Fi.
Try Again
Try Again...
|
NULL
|
|
42649
|
910
|
23
|
2026-04-17T07:31:18.863397+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411078863_m1.jpg...
|
PhpStorm
|
faVsco.js – crm_configurations [EU]
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"367","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"367","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"459","depth":6,"role_description":"cell"}]...
|
1964369226224912382
|
-5903908238265193908
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459...
|
NULL
|
|
42650
|
911
|
25
|
2026-04-17T07:31:18.863728+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411078863_m2.jpg...
|
PhpStorm
|
faVsco.js – crm_configurations [EU]
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459
459...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.03046875,"top":0.017361112,"width":0.0453125,"height":0.022222223},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.14960937,"height":0.022222223},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.78515625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.803125,"top":0.017361112,"width":0.09765625,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9007813,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9140625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9273437,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96015626,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9734375,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9867188,"top":0.017361112,"width":0.013281226,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.049609374,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.4265625,"top":0.19513889,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.43789062,"top":0.19375,"width":0.00859375,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.4464844,"top":0.19375,"width":0.008203125,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"367","depth":6,"bounds":{"left":0.62226564,"top":0.16527778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"367","depth":7,"bounds":{"left":0.62226564,"top":0.16527778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":6,"bounds":{"left":0.62226564,"top":0.18402778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":7,"bounds":{"left":0.62226564,"top":0.18402778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"459","depth":6,"bounds":{"left":0.62226564,"top":0.20277777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"459","depth":7,"bounds":{"left":0.62226564,"top":0.20277777,"width":0.11757813,"height":0.018055556},"role_description":"text"}]...
|
-6001545775337025954
|
-5903908238265193908
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459
459...
|
NULL
|
|
42653
|
910
|
25
|
2026-04-17T07:31:24.137549+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411084137_m1.jpg...
|
Firefox
|
CloudWatch | us-east-2 — Work
|
True
|
us-east-2.console.aws.amazon.com/cloudwatch/home?r us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logsV2:logs-insights$3FqueryDetail$3D~(end~0~start~-604800~timeType~'RELATIVE~tz~'UTC~unit~'seconds~editorString~'fields*20*40timestamp*2c*20*40message*2c*20*40logStream*2c*20*40log*0a*7c*20filter*20*40message*20like*20*2f822fa41b-afd3-43a9-a248-86b0e36f3131*2f*20*0a*7c*20filter*20*40message*20not*20like*20*2fAnalytic*2f*20*7c*20filter*20*40message*20not*20like*20*2fSend*2f*0a*7c*20filter*20*40message*20not*20like*20*2fWebhook*2f*20*7c*20filter*20*40message*20not*20like*20*2fMeetingBot*2f*20*0a*7c*20limit*2010000~queryId~'0551e814-f51a-4339-8372-80d7ba4cef27~source~(~'worker~'worker-analytics~'worker-app~'worker-audio~'worker-calendar~'worker-conferences~'worker-crm-sync~'worker-default~'worker-delayed~'worker-dialers~'worker-dialers-fifo~'worker-download~'worker-emails~'worker-meeting-bot~'worker-nudges~'worker-processing-1~'worker-processing-2~'worker-processing-3~'worker-processing-4~'worker-processing-5~'worker-processing-delayed~'worker-softphone~'worker-video~'worker-video-app~'php~'php-app)~lang~'CWLI~logClass~'STANDARD~queryBy~'logGroupName)...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Workers | Datadog
Platform Sprint 2 Q2 - Platform Workers | Datadog
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Problem loading page
Problem loading page
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
CloudWatch | us-east-2
CloudWatch | us-east-2
Close tab
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | eu-west-1
Console Home | Console Home | eu-west-1
New Tab
New Tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AWS Console Home
Skip to Main Content
Skip to Main Content
Amazon Q
Services
Search
Ask Amazon Q
[Option+S]
CloudShell
Notifications (none available)
Help & support
Settings
United States (Ohio)
United States (Ohio)...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Workers | Datadog","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Problem loading page","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Problem loading page","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"CloudWatch | us-east-2","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Console Home | Console Home | eu-west-1","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Console Home | Console Home | eu-west-1","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"AWS Console Home","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to Main Content","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to Main Content","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Amazon Q","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Services","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"Search","depth":16,"role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ask Amazon Q","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[Option+S]","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CloudShell","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Notifications (none available)","depth":16,"help_text":"Notifications","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Help & support","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Settings","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"United States (Ohio)","depth":15,"value":"United States (Ohio)","help_text":"United States (Ohio)","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"United States (Ohio)","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-302088065044559244
|
6642946536089793216
|
app_switch
|
accessibility
|
NULL
|
Workers | Datadog
Platform Sprint 2 Q2 - Platform Workers | Datadog
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Problem loading page
Problem loading page
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
CloudWatch | us-east-2
CloudWatch | us-east-2
Close tab
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | eu-west-1
Console Home | Console Home | eu-west-1
New Tab
New Tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AWS Console Home
Skip to Main Content
Skip to Main Content
Amazon Q
Services
Search
Ask Amazon Q
[Option+S]
CloudShell
Notifications (none available)
Help & support
Settings
United States (Ohio)
United States (Ohio)...
|
NULL
|
|
42661
|
910
|
29
|
2026-04-17T07:31:36.855948+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411096855_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditView→CHistoryBookmarksProfilesTools FirefoxFileEditView→CHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.comBackend Chapter • nowLA100% 147 8• Fri 17 Apr 10:31:[EMAIL] account+Lukas KovalikBackend ChapterPeoole are waitina Join to let them inPS$131NNotion CalendarOther ways to join{ soundcore A...4 System Defa...• FaceTime HD...g Backgrounds...cins to melting ca piions. sing AskOem ini meetingeaeistaeco diag oralyze convengadita ia emeotaghost can turn it off. Learn moreLộ3...
|
NULL
|
4655662188086691566
|
NULL
|
app_switch
|
ocr
|
NULL
|
FirefoxFileEditView→CHistoryBookmarksProfilesTools FirefoxFileEditView→CHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.comBackend Chapter • nowLA100% 147 8• Fri 17 Apr 10:31:[EMAIL] account+Lukas KovalikBackend ChapterPeoole are waitina Join to let them inPS$131NNotion CalendarOther ways to join{ soundcore A...4 System Defa...• FaceTime HD...g Backgrounds...cins to melting ca piions. sing AskOem ini meetingeaeistaeco diag oralyze convengadita ia emeotaghost can turn it off. Learn moreLộ3...
|
NULL
|
|
42662
|
911
|
31
|
2026-04-17T07:31:36.902867+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411096902_m2.jpg...
|
iTerm2
|
DOCKER (docker-compose)
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelp.50 lhl• $ Backend Chapter • now100% 1Z5l8 • Fri 17 Apr 10:31:36us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logsV2:logs-insights$3FqueryDetailS3D~(end~O~start~-604800~timeType~'RELATIVE~tz~'UTC~unit~'seconds~editorString~'fields*20*40timestamp*2c*20*40message*2c*20*40logStream*2с*20*40log*0a*7с*2Account ID: 4103-4619-5943awsSearch[Option+S]©United States (Ohio)Platform Sprint 2 Q2 - Platform TeO EC2© Elastic Container ServiceG 53© CodeDeployCa CloudWatchElastiCache 0l Aurora and RDS ißl Amazon OpenSearch Ser... €® CloudFront a Medialive[SRD-6793] Les Mills activity type:CloudWatch Logs Insights• Problem loading page• Query definition Info5m30m1h12hCustom (1w) ECompare (Off)UTC timezoneL7 Start tailingSymfony|Component\Debug\ExcerQuery scopeCloudWatch | us-east-2Loe crous lidlleLog groupsSelect up to 50 log groupsrroperty selectorBrowse: Lod Groups racers Lookud tablesZ Configure SSH access to multipleworker4703467959431clearal)@ Console Home | Console Home | elNew Tab+ New TabE Show more chosen log groups (+25)fields @timestamp, @message, @logStream, @logtilter @message like /3364459/• filter @message not like /Analytic/ | filter @message not like /Send/mutericmessave not ulke/weonookmlter dhessade not ulke /meeminabot• LImit 10006Logs Insights QL v*L Query generator ® FieldsD Saved and sample queriesQuery commandsRun queryFetching resultsCancelSaveSchedule queryHistoryLogs (-)Patterns (-)VisualizationLogs (-)(* Summarize results )# Investigate ? )E Share resultsExport resultsAdd to dashboardFetching data...Hide nistogram108688804/1004/1004/1104/1104/1104/1104/1204/1204/1204/1204/1304/1304/1304/1304/1404/1404/1404/1404/1504/1504/1504/1504/1604/1604/1604/1604/17CloudShellreedback© 2026, Amazon Web Services, Inc. or its affiliates.PrivacyTermscookie preferences...
|
NULL
|
-576183744760892342
|
NULL
|
app_switch
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelp.50 lhl• $ Backend Chapter • now100% 1Z5l8 • Fri 17 Apr 10:31:36us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logsV2:logs-insights$3FqueryDetailS3D~(end~O~start~-604800~timeType~'RELATIVE~tz~'UTC~unit~'seconds~editorString~'fields*20*40timestamp*2c*20*40message*2c*20*40logStream*2с*20*40log*0a*7с*2Account ID: 4103-4619-5943awsSearch[Option+S]©United States (Ohio)Platform Sprint 2 Q2 - Platform TeO EC2© Elastic Container ServiceG 53© CodeDeployCa CloudWatchElastiCache 0l Aurora and RDS ißl Amazon OpenSearch Ser... €® CloudFront a Medialive[SRD-6793] Les Mills activity type:CloudWatch Logs Insights• Problem loading page• Query definition Info5m30m1h12hCustom (1w) ECompare (Off)UTC timezoneL7 Start tailingSymfony|Component\Debug\ExcerQuery scopeCloudWatch | us-east-2Loe crous lidlleLog groupsSelect up to 50 log groupsrroperty selectorBrowse: Lod Groups racers Lookud tablesZ Configure SSH access to multipleworker4703467959431clearal)@ Console Home | Console Home | elNew Tab+ New TabE Show more chosen log groups (+25)fields @timestamp, @message, @logStream, @logtilter @message like /3364459/• filter @message not like /Analytic/ | filter @message not like /Send/mutericmessave not ulke/weonookmlter dhessade not ulke /meeminabot• LImit 10006Logs Insights QL v*L Query generator ® FieldsD Saved and sample queriesQuery commandsRun queryFetching resultsCancelSaveSchedule queryHistoryLogs (-)Patterns (-)VisualizationLogs (-)(* Summarize results )# Investigate ? )E Share resultsExport resultsAdd to dashboardFetching data...Hide nistogram108688804/1004/1004/1104/1104/1104/1104/1204/1204/1204/1204/1304/1304/1304/1304/1404/1404/1404/1404/1504/1504/1504/1504/1604/1604/1604/1604/17CloudShellreedback© 2026, Amazon Web Services, Inc. or its affiliates.PrivacyTermscookie preferences...
|
NULL
|
|
42665
|
910
|
31
|
2026-04-17T07:31:40.233537+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411100233_m1.jpg...
|
iTerm2
|
DOCKER (docker-compose)
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Thu Apr 16 15:43:43 on console
Poetry Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
%
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
Attaching to blackfire-1, datadog-1, jiminny_ext-1, mariadb-1, docker_lamp_1, elasticsearch, kibana, ngrok, redis
mariadb-1 | 2026-04-17 07:28:13+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.4.5+maria~ubu2404 started.
redis | 1:C 17 Apr 2026 07:28:13.623 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis | 1:C 17 Apr 2026 07:28:13.625 # Redis version=5.0.14, bits=64, commit=00000000, modified=0, pid=1, just started
redis | 1:C 17 Apr 2026 07:28:13.625 # Configuration loaded
redis | 1:M 17 Apr 2026 07:28:13.630 * Running mode=standalone, port=6379.
redis | 1:M 17 Apr 2026 07:28:13.630 # Server initialized
redis | 1:M 17 Apr 2026 07:28:13.630 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
redis | 1:M 17 Apr 2026 07:28:13.633 * Reading RDB preamble from AOF file...
redis | 1:M 17 Apr 2026 07:28:13.634 * Reading the remaining AOF tail...
blackfire-1 | [2026-04-17T07:28:13Z] ERROR: The server ID parameter is not set. Please run 'blackfire-agent -register' to configure it.
blackfire-1 | usage blackfire-agent [options]
blackfire-1 | --collector="[URL_WITH_CREDENTIALS] controller (64 bit): Version 7.10.2 (Build 40a3af639d4698) Copyright (c) 2020 Elasticsearch BV" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:31,936Z", "level": "INFO", "component": "o.e.t.NettyAllocator", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "creating NettyAllocator with the following configs: [name=unpooled, suggested_max_allocation_size=256kb, factors={es.unsafe.use_unpooled_allocator=null, g1gc_enabled=true, g1gc_region_size=1mb, heap_size=700mb}]" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:32,217Z", "level": "INFO", "component": "o.e.d.DiscoveryModule", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "using discovery type [single-node] and seed hosts providers [settings]" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:33,367Z", "level": "WARN", "component": "o.e.g.DanglingIndicesState", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "gateway.auto_import_dangling_indices is disabled, dangling indices will not be automatically detected or imported and must be managed manually" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:34,469Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "initialized" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:34,470Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "starting ..." }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:34,818Z", "level": "INFO", "component": "o.e.t.TransportService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "publish_address {[IP_ADDRESS]:9300}, bound_addresses {[::]:9300}" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:35,545Z", "level": "INFO", "component": "o.e.c.c.Coordinator", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "cluster UUID [8uh2w1CUSGyWYR_OvaKx6g]" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:35,815Z", "level": "INFO", "component": "o.e.c.s.MasterService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "elected-as-master ([1] nodes joined)[{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{[IP_ADDRESS]}{[IP_ADDRESS]:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20} elect leader, _BECOME_MASTER_TASK_, _FINISH_ELECTION_], term: 222, version: 8367, delta: master node changed {previous [], current [{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{[IP_ADDRESS]}{[IP_ADDRESS]:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:36,253Z", "level": "INFO", "component": "o.e.c.s.ClusterApplierService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "master node changed {previous [], current [{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{[IP_ADDRESS]}{[IP_ADDRESS]:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}, term: 222, version: 8367, reason: Publication{term=222, version=8367}" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:36,419Z", "level": "INFO", "component": "o.e.h.AbstractHttpServerTransport", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "publish_address {[IP_ADDRESS]:9200}, bound_addresses {[::]:9200}", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:36,420Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "started", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:37,479Z", "level": "INFO", "component": "o.e.l.LicenseService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "license [85e882e5-5714-4173-a5dd-9baa841494a0] mode [basic] - valid", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:37,500Z", "level": "INFO", "component": "o.e.g.GatewayService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "recovered [15] indices into cluster_state", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:45,368Z", "level": "INFO", "component": "o.e.c.r.a.AllocationService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "Cluster health status changed from [RED] to [YELLOW] (reason: [shards started [[activities_testing][0]]]).", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:21Z","tags":["info","plugins-service"],"pid":7,"message":"Plugin \"visTypeXy\" is disabled."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:21Z","tags":["info","plugins-service"],"pid":7,"message":"Plugin \"auditTrail\" is disabled."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:21Z","tags":["warning","config","deprecation"],"pid":7,"message":"Config key [monitoring.cluster_alerts.email_notifications.email_address] will be required for email notifications to work in 8.0.\""}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:21Z","tags":["info","plugins-system"],"pid":7,"message":"Setting up [96] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,code,mapsLegacy,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,newsfeed,kibanaLegacy,translations,share,legacyExport,embeddable,uiActionsEnhanced,expressions,data,home,observability,cloud,apmOss,console,consoleExtensions,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,dashboard,visualizations,visTypeTimelion,timelion,features,upgradeAssistant,security,snapshotRestore,encryptedSavedObjects,ingestManager,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,dashboardMode,beatsManagement,transform,ingestPipelines,maps,licenseManagement,graph,dataEnhanced,visTypeVega,visTypeTable,visTypeMarkdown,tileMap,regionMap,inputControlVis,visualize,esUiShared,charts,lens,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,discover,discoverEnhanced,savedObjectsManagement,spaces,reporting,lists,eventLog,actions,case,alerts,stackAlerts,triggersActionsUi,ml,securitySolution,infra,monitoring,logstash,apm,uptime,bfetch,canvas]"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","security","config"],"pid":7,"message":"Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.yml"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","security","config"],"pid":7,"message":"Session cookies will be transmitted over insecure connections. This is not recommended."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","encryptedSavedObjects","config"],"pid":7,"message":"Generating a random key for xpack.encryptedSavedObjects.encryptionKey. To be able to decrypt encrypted saved objects attributes after restart, please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","ingestManager"],"pid":7,"message":"Fleet APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","reporting","config"],"pid":7,"message":"Generating a random key for xpack.reporting.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.reporting.encryptionKey in kibana.yml"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","reporting","config"],"pid":7,"message":"Found 'server.host: \"0\"' in Kibana configuration. This is incompatible with Reporting. To enable Reporting to work, 'xpack.reporting.kibanaServer.hostname: [IP_ADDRESS]' is being automatically to the configuration. You can change the setting to 'server.host: [IP_ADDRESS]' or add 'xpack.reporting.kibanaServer.hostname: [IP_ADDRESS]' in kibana.yml to prevent this message."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","reporting","config"],"pid":7,"message":"Chromium sandbox provides an additional layer of protection, but is not supported for Linux CentOS 8.3.2011\n OS. Automatically setting 'xpack.reporting.capture.browser.chromium.disableSandbox: true'."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","actions","actions"],"pid":7,"message":"APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:23Z","tags":["warning","plugins","alerts","plugins","alerting"],"pid":7,"message":"APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:23Z","tags":["info","plugins","monitoring","monitoring"],"pid":7,"message":"config sourced from: production cluster"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:23Z","tags":["info","savedobjects-service"],"pid":7,"message":"Waiting until all Elasticsearch nodes are compatible with Kibana before starting saved objects migrations..."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:23Z","tags":["info","savedobjects-service"],"pid":7,"message":"Starting saved objects migrations"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins-system"],"pid":7,"message":"Starting [96] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,code,mapsLegacy,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,newsfeed,kibanaLegacy,translations,share,legacyExport,embeddable,uiActionsEnhanced,expressions,data,home,observability,cloud,apmOss,console,consoleExtensions,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,dashboard,visualizations,visTypeTimelion,timelion,features,upgradeAssistant,security,snapshotRestore,encryptedSavedObjects,ingestManager,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,dashboardMode,beatsManagement,transform,ingestPipelines,maps,licenseManagement,graph,dataEnhanced,visTypeVega,visTypeTable,visTypeMarkdown,tileMap,regionMap,inputControlVis,visualize,esUiShared,charts,lens,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,discover,discoverEnhanced,savedObjectsManagement,spaces,reporting,lists,eventLog,actions,case,alerts,stackAlerts,triggersActionsUi,ml,securitySolution,infra,monitoring,logstash,apm,uptime,bfetch,canvas]"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins","taskManager","taskManager"],"pid":7,"message":"TaskManager is identified by the Kibana UUID: bf01f365-e094-4cde-940d-3e0db65fa22a"}
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:29:24,796Z", "level": "INFO", "component": "o.e.c.m.MetadataIndexTemplateService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "adding template [.management-beats] for index patterns [.management-beats]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins","crossClusterReplication"],"pid":7,"message":"Your basic license does not support crossClusterReplication. Please upgrade your license."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins","watcher"],"pid":7,"message":"Your basic license does not support watcher. Please upgrade your license."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins","monitoring","monitoring","kibana-monitoring"],"pid":7,"message":"Starting monitoring stats collection"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:endpoint:user-artifact-packager:1.0.0]: version conflict, document already exists (current version [307637])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:Actions-actions_telemetry]: version conflict, document already exists (current version [733])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:apm-telemetry-task]: version conflict, document already exists (current version [1210])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:Alerting-alerting_telemetry]: version conflict, document already exists (current version [733])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:Lens-lens_telemetry]: version conflict, document already exists (current version [733])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:26Z","tags":["listening","info"],"pid":7,"message":"Server running at [URL_WITH_CREDENTIALS] server running at [URL_WITH_CREDENTIALS] the Chromium sandbox provides an additional layer of protection."}
docker_lamp_1 | Warning: Ambiguous class resolution, "Microsoft\Graph\Generated\Models\AudioConferencing" was found in both "/home/jiminny/app/Services/MeetingGenerator/Overrides/Microsoft/Graph/Generated/Models/AudioConferencing.php" and "/home/jiminny/vendor/microsoft/microsoft-graph/src/Generated/Models/AudioConferencing.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\AwsS3V3\AwsS3V3Adapter" was found in both "/home/jiminny/vendor/league/flysystem-aws-s3-v3/AwsS3V3Adapter.php" and "/home/jiminny/vendor/league/flysystem/src/AwsS3V3/AwsS3V3Adapter.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\AwsS3V3\PortableVisibilityConverter" was found in both "/home/jiminny/vendor/league/flysystem-aws-s3-v3/PortableVisibilityConverter.php" and "/home/jiminny/vendor/league/flysystem/src/AwsS3V3/PortableVisibilityConverter.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\AwsS3V3\VisibilityConverter" was found in both "/home/jiminny/vendor/league/flysystem-aws-s3-v3/VisibilityConverter.php" and "/home/jiminny/vendor/league/flysystem/src/AwsS3V3/VisibilityConverter.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\Local\LocalFilesystemAdapter" was found in both "/home/jiminny/vendor/league/flysystem-local/LocalFilesystemAdapter.php" and "/home/jiminny/vendor/league/flysystem/src/Local/LocalFilesystemAdapter.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\Local\FallbackMimeTypeDetector" was found in both "/home/jiminny/vendor/league/flysystem-local/FallbackMimeTypeDetector.php" and "/home/jiminny/vendor/league/flysystem/src/Local/FallbackMimeTypeDetector.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\Local\LocalFilesystemAdapterTest" was found in both "/home/jiminny/vendor/league/flysystem-local/LocalFilesystemAdapterTest.php" and "/home/jiminny/vendor/league/flysystem/src/Local/LocalFilesystemAdapterTest.php", the first will be used.
docker_lamp_1 | Class Tests\Unit\Http\Controllers\API\V2\OnDemandV2ControllerTest located in ./tests/Unit/Http/Controllers/Api/V2/OnDemandV2ControllerTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | Class Tests\Unit\Notifications\PostmarkChannelTest located in ./tests/Feature/Notifications/PostmarkChannelTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | Class Tests\Unit\Http\Controllers\API\V2\OnDemandV2ControllerTest located in ./tests/Unit/Http/Controllers/Api/V2/OnDemandV2ControllerTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | Class Tests\Unit\Notifications\PostmarkChannelTest located in ./tests/Feature/Notifications/PostmarkChannelTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | Class RingCentral\SDK\WebSocket\WebSocketSubscriptionTest located in ./vendor/ringcentral/ringcentral-php/src/WebSocket/SubscriptionTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | > Illuminate\Foundation\ComposerScripts::postAutoloadDump
docker_lamp_1 | > @php artisan package:discover --ansi
docker_lamp_1 |
docker_lamp_1 | INFO Discovering packages.
docker_lamp_1 |
docker_lamp_1 | 24slides/laravel-saml2 [PASSWORD_DOTS] DONE
docker_lamp_1 | aws/aws-sdk-php-laravel [PASSWORD_DOTS] DONE
docker_lamp_1 | barryvdh/laravel-debugbar [PASSWORD_DOTS] DONE
docker_lamp_1 | barryvdh/laravel-dompdf [PASSWORD_DOTS] DONE
docker_lamp_1 | barryvdh/laravel-ide-helper [PASSWORD_DOTS] DONE
docker_lamp_1 | bepsvpt/secure-headers [PASSWORD_DOTS] DONE
docker_lamp_1 | chaseconey/laravel-datadog-helper [PASSWORD_DOTS] DONE
docker_lamp_1 | devio/pipedrive [PASSWORD_DOTS] DONE
docker_lamp_1 | jasonmccreary/laravel-test-assertions [PASSWORD_DOTS] DONE
docker_lamp_1 | jdavidbakr/cloudfront-proxies [PASSWORD_DOTS] DONE
docker_lamp_1 | kalnoy/nestedset [PASSWORD_DOTS] DONE
docker_lamp_1 | laravel/passport [PASSWORD_DOTS] DONE
docker_lamp_1...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n% \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nAttaching to blackfire-1, datadog-1, jiminny_ext-1, mariadb-1, docker_lamp_1, elasticsearch, kibana, ngrok, redis\nmariadb-1 | 2026-04-17 07:28:13+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.4.5+maria~ubu2404 started.\nredis | 1:C 17 Apr 2026 07:28:13.623 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo\nredis | 1:C 17 Apr 2026 07:28:13.625 # Redis version=5.0.14, bits=64, commit=00000000, modified=0, pid=1, just started\nredis | 1:C 17 Apr 2026 07:28:13.625 # Configuration loaded\nredis | 1:M 17 Apr 2026 07:28:13.630 * Running mode=standalone, port=6379.\nredis | 1:M 17 Apr 2026 07:28:13.630 # Server initialized\nredis | 1:M 17 Apr 2026 07:28:13.630 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.\nredis | 1:M 17 Apr 2026 07:28:13.633 * Reading RDB preamble from AOF file...\nredis | 1:M 17 Apr 2026 07:28:13.634 * Reading the remaining AOF tail...\nblackfire-1 | [2026-04-17T07:28:13Z] ERROR: The server ID parameter is not set. Please run 'blackfire-agent -register' to configure it.\nblackfire-1 | usage blackfire-agent [options]\nblackfire-1 | --collector=\"https://blackfire.io\": Sets the URL of Blackfire's data collector\nblackfire-1 | --config=\"/etc/blackfire/agent\": Sets the path to the configuration file\nblackfire-1 | -d: Prints the current configuration\nblackfire-1 | --http-proxy=\"\": Sets the HTTP proxy to use\nblackfire-1 | --https-proxy=\"\": Sets the HTTPS proxy to use\nblackfire-1 | --log-file=\"stderr\": Sets the path of the log file. Use stderr to log to stderr\nblackfire-1 | --log-level=\"1\": log verbosity level (4: debug, 3: info, 2: warning, 1: error)\nblackfire-1 | --register: Helps you with registering the agent\nblackfire-1 | --server-id=\"\": Sets the server id used to authenticate with Blackfire API\nblackfire-1 | --server-token=\"\": Sets the server token used to authenticate with Blackfire API. It is unsafe to set this from the command line\nblackfire-1 | --socket=\"unix:///var/run/blackfire/agent.sock\": Sets the socket the agent should read traces from. Possible value can be a unix socket or a TCP address. ie: unix:///var/run/blackfire/agent.sock or tcp://127.0.0.1:8307\nblackfire-1 | --test: Tests the configuration\nblackfire-1 | --timeout=\"15s\": Sets the Blackfire connection timeout\nblackfire-1 | -v: Prints the version number\nngrok | t=2026-04-17T07:28:13+0000 lvl=info msg=\"no configuration paths supplied\"\nngrok | t=2026-04-17T07:28:13+0000 lvl=info msg=\"using configuration at default config path\" path=/home/ngrok/.ngrok2/ngrok.yml\nngrok | t=2026-04-17T07:28:13+0000 lvl=info msg=\"open config file\" path=/home/ngrok/.ngrok2/ngrok.yml err=nil\nblackfire-1 exited with code 1\nngrok | t=2026-04-17T07:28:13+0000 lvl=info msg=\"starting web service\" obj=web addr=0.0.0.0:4040\njiminny_ext-1 exited with code 0\ndocker_lamp_1 | + main\ndocker_lamp_1 | + declare START_DIR\ndocker_lamp_1 | +++ realpath /scripts/init-dev\ndocker_lamp_1 | ++ dirname /scripts/init-dev\ndocker_lamp_1 | + START_DIR=/scripts\ndocker_lamp_1 | + readonly START_DIR\ndocker_lamp_1 | + source /scripts/storage_init.sh\ndocker_lamp_1 | ++ set -o errexit\ndocker_lamp_1 | ++ set -o nounset\ndocker_lamp_1 | ++ set -o pipefail\ndocker_lamp_1 | + create_bind_mount\ndocker_lamp_1 | + [[ 0 == \\1 ]]\ndocker_lamp_1 | + configure_xdebug\ndocker_lamp_1 | + j2 /root/.j2_templates/xdebug/xdebug.ini.j2\nmariadb-1 | 2026-04-17 07:28:14+00:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB\nmariadb-1 | 2026-04-17 07:28:14+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'\nngrok | t=2026-04-17T07:28:14+0000 lvl=info msg=\"tunnel session started\" obj=tunnels.session\nngrok | t=2026-04-17T07:28:14+0000 lvl=info msg=\"client session established\" obj=csess id=34de209b437c\nmariadb-1 | 2026-04-17 07:28:14+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.4.5+maria~ubu2404 started.\nngrok | t=2026-04-17T07:28:14+0000 lvl=info msg=\"started tunnel\" obj=tunnels name=\"command_line (http)\" addr=http://lamp:3080 url=http://lukask.ngrok.io\nngrok | t=2026-04-17T07:28:14+0000 lvl=info msg=\"started tunnel\" obj=tunnels name=command_line addr=http://lamp:3080 url=https://lukask.ngrok.io\ndatadog-1 | [s6-init] making user provided files available at /var/run/s6/etc...exited 0.\nmariadb-1 | 2026-04-17 07:28:15+00:00 [Note] [Entrypoint]: MariaDB upgrade information missing, assuming required\nmariadb-1 | 2026-04-17 07:28:15+00:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] Starting MariaDB 11.4.5-MariaDB-ubu2404 source revision 0771110266ff5c04216af4bf1243c65f8c67ccf4 server_uid LEIUY8nWIgtXzFZ8Uo7xi+G0Q88= as process 1\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Compressed tables use zlib 1.3\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Number of transaction pools: 1\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Using ARMv8 crc32 + pmull instructions\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Using liburing\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Completed initialization of buffer pool\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: End of log at LSN=7522656703\nngrok | t=2026-04-17T07:28:15+0000 lvl=info msg=\"update available\" obj=updater\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Opened 3 undo tablespaces\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: log sequence number 7522656703; transaction id 11384091\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] Plugin 'FEEDBACK' is disabled.\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] Plugin 'wsrep-provider' is disabled.\ndocker_lamp_1 | + configure_blackfire\ndocker_lamp_1 | + j2 /root/.j2_templates/blackfire/extension.ini.j2\ndocker_lamp_1 | + j2 /root/.j2_templates/blackfire/cli.ini.j2\ndocker_lamp_1 | + declare EMPTY_DB\ndocker_lamp_1 | + db_is_empty\ndocker_lamp_1 | ++ find /var/lib/mysql/ -maxdepth 1\ndocker_lamp_1 | ++ wc -l\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Buffer pool(s) load completed at 260417 7:28:15\ndocker_lamp_1 | + [[ 11 -lt 5 ]]\ndocker_lamp_1 | + EMPTY_DB=0\ndocker_lamp_1 | + readonly EMPTY_DB\ndocker_lamp_1 | + [[ 0 -eq 1 ]]\ndocker_lamp_1 | + [[ local == \\l\\o\\c\\a\\l ]]\ndocker_lamp_1 | + set_nginx_domain dev.jiminny.com\ndocker_lamp_1 | + declare -r DOMAIN_NAME=dev.jiminny.com\ndocker_lamp_1 | + cp -f /etc/nginx/nginx_template.conf /etc/nginx/nginx.conf\ndocker_lamp_1 | + sed -i -E s~_JIMINNY_DOMAIN~app.dev.jiminny.com~g /etc/nginx/nginx.conf\ndocker_lamp_1 | + sed -i -E s~_JIMINNY_EXT_DOMAIN~ext.dev.jiminny.com~g /etc/nginx/nginx.conf\ndocker_lamp_1 | + sed -i -E s~_JIMINNY_WEB_DOMAIN~www.dev.jiminny.com~g /etc/nginx/nginx.conf\ndocker_lamp_1 | + [[ -n 3399 ]]\ndocker_lamp_1 | + sed -i -E 's~http:\\/\\/jiminny_ext:8080~http://jiminny_ext:3399~g' /etc/nginx/nginx.conf\ndocker_lamp_1 | + [[ -n host.docker.internal ]]\ndocker_lamp_1 | + sed -i -E 's~http:\\/\\/jiminny_ext~http://host.docker.internal~g' /etc/nginx/nginx.conf\ndocker_lamp_1 | + build_dev\ndocker_lamp_1 | + cd /home/jiminny/\ndocker_lamp_1 | + create_dot_env_local_file\ndocker_lamp_1 | + cp -f /home/jiminny/.env.local /home/jiminny/.env.local.bak\ndocker_lamp_1 | + create_dot_env\ndocker_lamp_1 | + [[ -f /home/jiminny/.env ]]\ndocker_lamp_1 | + return\ndocker_lamp_1 | + declare DB_ADMIN_PASSWORD\ndocker_lamp_1 | + declare DB_ADMIN_USERNAME\ndocker_lamp_1 | + declare DB_DEV_PASSWORD\ndocker_lamp_1 | + declare DB_DEV_USERNAME\ndocker_lamp_1 | + declare DB_ROOT_PASSWORD\ndocker_lamp_1 | + declare DB_ROOT_USERNAME\ndocker_lamp_1 | + declare DB_WEB_PASSWORD\ndocker_lamp_1 | + declare DB_WEB_USERNAME\ndocker_lamp_1 | ++ jq -r .DB_ADMIN_PASSWORD /home/jiminny/dev.json\ndocker_lamp_1 | + DB_ADMIN_PASSWORD='dgyt$rTe21-d'\ndocker_lamp_1 | ++ jq -r .DB_ADMIN_USERNAME /home/jiminny/dev.json\ndocker_lamp_1 | + DB_ADMIN_USERNAME=jmnyadmin\ndocker_lamp_1 | ++ jq -r .DB_DEV_PASSWORD /home/jiminny/dev.json\ndocker_lamp_1 | + DB_DEV_PASSWORD=rTr4sdQA65-Ad\ndocker_lamp_1 | ++ jq -r .DB_DEV_USERNAME /home/jiminny/dev.json\ndatadog-1 | [s6-init] ensuring user provided files have correct perms...exited 0.\ndocker_lamp_1 | + DB_DEV_USERNAME=jmnydev\ndocker_lamp_1 | ++ jq -r .DB_ROOT_PASSWORD /home/jiminny/dev.json\ndatadog-1 | [fix-attrs.d] applying ownership & permissions fixes...\ndocker_lamp_1 | + DB_ROOT_PASSWORD=b7h5-1fH3e54J\ndocker_lamp_1 | ++ jq -r .DB_ROOT_USERNAME /home/jiminny/dev.json\ndatadog-1 | [fix-attrs.d] done.\ndocker_lamp_1 | + DB_ROOT_USERNAME=root\ndocker_lamp_1 | ++ jq -r .DB_WEB_PASSWORD /home/jiminny/dev.json\ndatadog-1 | [cont-init.d] executing container initialization scripts...\ndocker_lamp_1 | + DB_WEB_PASSWORD=aR5-EWf23b8da\ndocker_lamp_1 | ++ jq -r .DB_WEB_USERNAME /home/jiminny/dev.json\ndatadog-1 | [cont-init.d] 01-check-apikey.sh: executing... \ndocker_lamp_1 | + DB_WEB_USERNAME=jmnyweb\ndocker_lamp_1 | + readonly DB_ADMIN_PASSWORD\ndocker_lamp_1 | + readonly DB_ADMIN_USERNAME\ndocker_lamp_1 | + readonly DB_DEV_PASSWORD\ndocker_lamp_1 | + readonly DB_DEV_USERNAME\ndocker_lamp_1 | + readonly DB_ROOT_PASSWORD\ndocker_lamp_1 | + readonly DB_ROOT_USERNAME\ndocker_lamp_1 | + readonly DB_WEB_PASSWORD\ndocker_lamp_1 | + readonly DB_WEB_USERNAME\ndocker_lamp_1 | + sed -i -E 's~DB_USERNAME=.*$~DB_USERNAME=jmnyadmin~g' /home/jiminny/.env\ndocker_lamp_1 | + sed -i -E 's~DB_PASSWORD=.*$~DB_PASSWORD=dgyt$rTe21-d~g' /home/jiminny/.env\nmariadb-1 | 2026-04-17 7:28:16 0 [Note] Server socket created on IP: '0.0.0.0'.\nmariadb-1 | 2026-04-17 7:28:16 0 [Note] Server socket created on IP: '::'.\ndocker_lamp_1 | + sed -i -E 's~DB_HOST=.*$~DB_HOST=mariadb~g' /home/jiminny/.env\ndocker_lamp_1 | + cp -f /home/jiminny/.env /home/jiminny/.env.root\ndocker_lamp_1 | + cp -f /home/jiminny/.env /home/jiminny/.env.migrate\ndocker_lamp_1 | + sed -i -E 's~DB_PASSWORD=.*$~DB_PASSWORD=b7h5-1fH3e54J~g' /home/jiminny/.env.migrate\ndocker_lamp_1 | + sed -i -E 's~DB_PASSWORD=.*$~DB_PASSWORD=b7h5-1fH3e54J~g' /home/jiminny/.env.root\ndocker_lamp_1 | + sed -i -E 's~DB_USERNAME=.*$~DB_USERNAME=root~g' /home/jiminny/.env.migrate\ndocker_lamp_1 | + sed -i -E 's~DB_USERNAME=.*$~DB_USERNAME=root~g' /home/jiminny/.env.root\nmariadb-1 | 2026-04-17 7:28:16 0 [Note] mariadbd: Event Scheduler: Loaded 0 events\ndatadog-1 | \ndatadog-1 | ==================================================================================\ndatadog-1 | You must set an DD_API_KEY environment variable to run the Datadog Agent container\ndatadog-1 | ==================================================================================\ndatadog-1 | \ndocker_lamp_1 | + cp -f /home/jiminny/.env /home/jiminny/.env.local\nmariadb-1 | 2026-04-17 7:28:16 0 [Note] mariadbd: ready for connections.\nmariadb-1 | Version: '11.4.5-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution\ndocker_lamp_1 | + echo ''\ndocker_lamp_1 | + echo 'DB_ADMIN_PASSWORD=dgyt$rTe21-d'\ndocker_lamp_1 | + echo DB_ADMIN_USERNAME=jmnyadmin\ndocker_lamp_1 | + echo DB_DEV_PASSWORD=rTr4sdQA65-Ad\ndocker_lamp_1 | + echo DB_DEV_USERNAME=jmnydev\ndocker_lamp_1 | + echo DB_ROOT_PASSWORD=b7h5-1fH3e54J\ndocker_lamp_1 | + echo DB_ROOT_USERNAME=root\ndocker_lamp_1 | + echo DB_WEB_PASSWORD=aR5-EWf23b8da\ndocker_lamp_1 | + echo DB_WEB_USERNAME=jmnyweb\ndocker_lamp_1 | + [[ false == \\f\\a\\l\\s\\e ]]\ndocker_lamp_1 | + declare COMPOSER_PARAM=--prefer-dist\ndocker_lamp_1 | + [[ 0 -eq 1 ]]\ndocker_lamp_1 | + composer install --prefer-dist\ndatadog-1 | [cont-init.d] 01-check-apikey.sh: exited 1.\ndatadog-1 exited with code 1\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:18,579Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"version[7.10.2], pid[6], build[default/docker/747e1cc71def077253878a59143c1f785afa92b9/2021-01-13T04:42:47.157277Z], OS[Linux/6.12.54-linuxkit/aarch64], JVM[AdoptOpenJDK/OpenJDK 64-Bit Server VM/15.0.1/15.0.1+9]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:18,581Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"JVM home [/usr/share/elasticsearch/jdk], using bundled JDK [true]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:18,581Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"JVM arguments [-Xshare:auto, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -XX:+ShowCodeDetailsInExceptionMessages, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dio.netty.allocator.numDirectArenas=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.locale.providers=SPI,COMPAT, -Xms1g, -Xmx1g, -XX:+UseG1GC, -XX:G1ReservePercent=25, -XX:InitiatingHeapOccupancyPercent=30, -Djava.io.tmpdir=/tmp/elasticsearch-2077775440550164101, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m, -Des.cgroups.hierarchy.override=/, -Xms700m, -Xmx700m, -XX:MaxDirectMemorySize=367001600, -Des.path.home=/usr/share/elasticsearch, -Des.path.conf=/usr/share/elasticsearch/config, -Des.distribution.flavor=default, -Des.distribution.type=docker, -Des.bundled_jdk=true]\" }\ndocker_lamp_1 | Installing dependencies from lock file (including require-dev)\ndocker_lamp_1 | Verifying lock file contents can be installed on current platform.\ndocker_lamp_1 | Nothing to install, update or remove\ndocker_lamp_1 | Package doctrine/annotations is abandoned, you should avoid using it. No replacement was suggested.\ndocker_lamp_1 | Package symfony/debug is abandoned, you should avoid using it. Use symfony/error-handler instead.\ndocker_lamp_1 | Generating optimized autoload files\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,937Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [aggs-matrix-stats]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,938Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [analysis-common]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,938Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [constant-keyword]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,938Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [flattened]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,938Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [frozen-indices]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [ingest-common]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [ingest-geoip]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [ingest-user-agent]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [kibana]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [lang-expression]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,940Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [lang-mustache]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,940Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [lang-painless]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,941Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [mapper-extras]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,941Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [mapper-version]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,941Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [parent-join]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,941Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [percolator]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [rank-eval]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [reindex]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [repositories-metering-api]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [repository-url]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [search-business-rules]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [searchable-snapshots]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [spatial]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [transform]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [transport-netty4]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [unsigned-long]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [vectors]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [wildcard]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-analytics]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-async]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-async-search]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-autoscaling]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-ccr]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-core]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-data-streams]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-deprecation]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-enrich]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-eql]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-graph]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-identity-provider]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-ilm]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-logstash]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-ml]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-monitoring]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-ql]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-rollup]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-security]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-sql]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-stack]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-voting-only-node]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-watcher]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,946Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"no plugins loaded\" }\nelasticsearch | {\"type\": \"deprecation\", \"timestamp\": \"2026-04-17T07:28:22,065Z\", \"level\": \"DEPRECATION\", \"component\": \"o.e.d.c.s.Settings\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[node.data] setting was deprecated in Elasticsearch and will be removed in a future release! See the breaking changes documentation for the next major version.\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:22,090Z\", \"level\": \"INFO\", \"component\": \"o.e.e.NodeEnvironment\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"using [1] data paths, mounts [[/usr/share/elasticsearch/data (/dev/vda1)]], net usable_space [14.8gb], net total_space [58.3gb], types [ext4]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:22,091Z\", \"level\": \"INFO\", \"component\": \"o.e.e.NodeEnvironment\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"heap size [700mb], compressed ordinary object pointers [true]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:22,256Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"node name [e802ad473a4f], node ID [e2ZKzgw4Q4aCf2w5ljWr1A], cluster name [docker-cluster], roles [transform, master, remote_cluster_client, data, ml, data_content, data_hot, data_warm, data_cold, ingest]\" }\nredis | 1:M 17 Apr 2026 07:28:28.232 * DB loaded from append only file: 14.601 seconds\nredis | 1:M 17 Apr 2026 07:28:28.232 * Ready to accept connections\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:29,740Z\", \"level\": \"INFO\", \"component\": \"o.e.x.m.p.l.CppLogMessageHandler\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[controller/213] [Main.cc@114] controller (64 bit): Version 7.10.2 (Build 40a3af639d4698) Copyright (c) 2020 Elasticsearch BV\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:31,936Z\", \"level\": \"INFO\", \"component\": \"o.e.t.NettyAllocator\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"creating NettyAllocator with the following configs: [name=unpooled, suggested_max_allocation_size=256kb, factors={es.unsafe.use_unpooled_allocator=null, g1gc_enabled=true, g1gc_region_size=1mb, heap_size=700mb}]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:32,217Z\", \"level\": \"INFO\", \"component\": \"o.e.d.DiscoveryModule\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"using discovery type [single-node] and seed hosts providers [settings]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:33,367Z\", \"level\": \"WARN\", \"component\": \"o.e.g.DanglingIndicesState\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"gateway.auto_import_dangling_indices is disabled, dangling indices will not be automatically detected or imported and must be managed manually\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:34,469Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"initialized\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:34,470Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"starting ...\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:34,818Z\", \"level\": \"INFO\", \"component\": \"o.e.t.TransportService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"publish_address {172.18.0.7:9300}, bound_addresses {[::]:9300}\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:35,545Z\", \"level\": \"INFO\", \"component\": \"o.e.c.c.Coordinator\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"cluster UUID [8uh2w1CUSGyWYR_OvaKx6g]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:35,815Z\", \"level\": \"INFO\", \"component\": \"o.e.c.s.MasterService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"elected-as-master ([1] nodes joined)[{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{172.18.0.7}{172.18.0.7:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20} elect leader, _BECOME_MASTER_TASK_, _FINISH_ELECTION_], term: 222, version: 8367, delta: master node changed {previous [], current [{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{172.18.0.7}{172.18.0.7:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:36,253Z\", \"level\": \"INFO\", \"component\": \"o.e.c.s.ClusterApplierService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"master node changed {previous [], current [{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{172.18.0.7}{172.18.0.7:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}, term: 222, version: 8367, reason: Publication{term=222, version=8367}\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:36,419Z\", \"level\": \"INFO\", \"component\": \"o.e.h.AbstractHttpServerTransport\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"publish_address {172.18.0.7:9200}, bound_addresses {[::]:9200}\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:36,420Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"started\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:37,479Z\", \"level\": \"INFO\", \"component\": \"o.e.l.LicenseService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"license [85e882e5-5714-4173-a5dd-9baa841494a0] mode [basic] - valid\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:37,500Z\", \"level\": \"INFO\", \"component\": \"o.e.g.GatewayService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"recovered [15] indices into cluster_state\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:45,368Z\", \"level\": \"INFO\", \"component\": \"o.e.c.r.a.AllocationService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"Cluster health status changed from [RED] to [YELLOW] (reason: [shards started [[activities_testing][0]]]).\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:21Z\",\"tags\":[\"info\",\"plugins-service\"],\"pid\":7,\"message\":\"Plugin \\\"visTypeXy\\\" is disabled.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:21Z\",\"tags\":[\"info\",\"plugins-service\"],\"pid\":7,\"message\":\"Plugin \\\"auditTrail\\\" is disabled.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:21Z\",\"tags\":[\"warning\",\"config\",\"deprecation\"],\"pid\":7,\"message\":\"Config key [monitoring.cluster_alerts.email_notifications.email_address] will be required for email notifications to work in 8.0.\\\"\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:21Z\",\"tags\":[\"info\",\"plugins-system\"],\"pid\":7,\"message\":\"Setting up [96] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,code,mapsLegacy,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,newsfeed,kibanaLegacy,translations,share,legacyExport,embeddable,uiActionsEnhanced,expressions,data,home,observability,cloud,apmOss,console,consoleExtensions,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,dashboard,visualizations,visTypeTimelion,timelion,features,upgradeAssistant,security,snapshotRestore,encryptedSavedObjects,ingestManager,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,dashboardMode,beatsManagement,transform,ingestPipelines,maps,licenseManagement,graph,dataEnhanced,visTypeVega,visTypeTable,visTypeMarkdown,tileMap,regionMap,inputControlVis,visualize,esUiShared,charts,lens,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,discover,discoverEnhanced,savedObjectsManagement,spaces,reporting,lists,eventLog,actions,case,alerts,stackAlerts,triggersActionsUi,ml,securitySolution,infra,monitoring,logstash,apm,uptime,bfetch,canvas]\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"security\",\"config\"],\"pid\":7,\"message\":\"Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.yml\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"security\",\"config\"],\"pid\":7,\"message\":\"Session cookies will be transmitted over insecure connections. This is not recommended.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"encryptedSavedObjects\",\"config\"],\"pid\":7,\"message\":\"Generating a random key for xpack.encryptedSavedObjects.encryptionKey. To be able to decrypt encrypted saved objects attributes after restart, please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"ingestManager\"],\"pid\":7,\"message\":\"Fleet APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"reporting\",\"config\"],\"pid\":7,\"message\":\"Generating a random key for xpack.reporting.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.reporting.encryptionKey in kibana.yml\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"reporting\",\"config\"],\"pid\":7,\"message\":\"Found 'server.host: \\\"0\\\"' in Kibana configuration. This is incompatible with Reporting. To enable Reporting to work, 'xpack.reporting.kibanaServer.hostname: 0.0.0.0' is being automatically to the configuration. You can change the setting to 'server.host: 0.0.0.0' or add 'xpack.reporting.kibanaServer.hostname: 0.0.0.0' in kibana.yml to prevent this message.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"reporting\",\"config\"],\"pid\":7,\"message\":\"Chromium sandbox provides an additional layer of protection, but is not supported for Linux CentOS 8.3.2011\\n OS. Automatically setting 'xpack.reporting.capture.browser.chromium.disableSandbox: true'.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"actions\",\"actions\"],\"pid\":7,\"message\":\"APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:23Z\",\"tags\":[\"warning\",\"plugins\",\"alerts\",\"plugins\",\"alerting\"],\"pid\":7,\"message\":\"APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:23Z\",\"tags\":[\"info\",\"plugins\",\"monitoring\",\"monitoring\"],\"pid\":7,\"message\":\"config sourced from: production cluster\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:23Z\",\"tags\":[\"info\",\"savedobjects-service\"],\"pid\":7,\"message\":\"Waiting until all Elasticsearch nodes are compatible with Kibana before starting saved objects migrations...\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:23Z\",\"tags\":[\"info\",\"savedobjects-service\"],\"pid\":7,\"message\":\"Starting saved objects migrations\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins-system\"],\"pid\":7,\"message\":\"Starting [96] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,code,mapsLegacy,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,newsfeed,kibanaLegacy,translations,share,legacyExport,embeddable,uiActionsEnhanced,expressions,data,home,observability,cloud,apmOss,console,consoleExtensions,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,dashboard,visualizations,visTypeTimelion,timelion,features,upgradeAssistant,security,snapshotRestore,encryptedSavedObjects,ingestManager,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,dashboardMode,beatsManagement,transform,ingestPipelines,maps,licenseManagement,graph,dataEnhanced,visTypeVega,visTypeTable,visTypeMarkdown,tileMap,regionMap,inputControlVis,visualize,esUiShared,charts,lens,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,discover,discoverEnhanced,savedObjectsManagement,spaces,reporting,lists,eventLog,actions,case,alerts,stackAlerts,triggersActionsUi,ml,securitySolution,infra,monitoring,logstash,apm,uptime,bfetch,canvas]\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins\",\"taskManager\",\"taskManager\"],\"pid\":7,\"message\":\"TaskManager is identified by the Kibana UUID: bf01f365-e094-4cde-940d-3e0db65fa22a\"}\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:29:24,796Z\", \"level\": \"INFO\", \"component\": \"o.e.c.m.MetadataIndexTemplateService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"adding template [.management-beats] for index patterns [.management-beats]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins\",\"crossClusterReplication\"],\"pid\":7,\"message\":\"Your basic license does not support crossClusterReplication. Please upgrade your license.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins\",\"watcher\"],\"pid\":7,\"message\":\"Your basic license does not support watcher. Please upgrade your license.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins\",\"monitoring\",\"monitoring\",\"kibana-monitoring\"],\"pid\":7,\"message\":\"Starting monitoring stats collection\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:endpoint:user-artifact-packager:1.0.0]: version conflict, document already exists (current version [307637])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:Actions-actions_telemetry]: version conflict, document already exists (current version [733])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:apm-telemetry-task]: version conflict, document already exists (current version [1210])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:Alerting-alerting_telemetry]: version conflict, document already exists (current version [733])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:Lens-lens_telemetry]: version conflict, document already exists (current version [733])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:26Z\",\"tags\":[\"listening\",\"info\"],\"pid\":7,\"message\":\"Server running at http://0:5601\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:28Z\",\"tags\":[\"info\",\"http\",\"server\",\"Kibana\"],\"pid\":7,\"message\":\"http server running at http://0:5601\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:30Z\",\"tags\":[\"warning\",\"plugins\",\"reporting\"],\"pid\":7,\"message\":\"Enabling the Chromium sandbox provides an additional layer of protection.\"}\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"Microsoft\\Graph\\Generated\\Models\\AudioConferencing\" was found in both \"/home/jiminny/app/Services/MeetingGenerator/Overrides/Microsoft/Graph/Generated/Models/AudioConferencing.php\" and \"/home/jiminny/vendor/microsoft/microsoft-graph/src/Generated/Models/AudioConferencing.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\AwsS3V3\\AwsS3V3Adapter\" was found in both \"/home/jiminny/vendor/league/flysystem-aws-s3-v3/AwsS3V3Adapter.php\" and \"/home/jiminny/vendor/league/flysystem/src/AwsS3V3/AwsS3V3Adapter.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\AwsS3V3\\PortableVisibilityConverter\" was found in both \"/home/jiminny/vendor/league/flysystem-aws-s3-v3/PortableVisibilityConverter.php\" and \"/home/jiminny/vendor/league/flysystem/src/AwsS3V3/PortableVisibilityConverter.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\AwsS3V3\\VisibilityConverter\" was found in both \"/home/jiminny/vendor/league/flysystem-aws-s3-v3/VisibilityConverter.php\" and \"/home/jiminny/vendor/league/flysystem/src/AwsS3V3/VisibilityConverter.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\Local\\LocalFilesystemAdapter\" was found in both \"/home/jiminny/vendor/league/flysystem-local/LocalFilesystemAdapter.php\" and \"/home/jiminny/vendor/league/flysystem/src/Local/LocalFilesystemAdapter.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\Local\\FallbackMimeTypeDetector\" was found in both \"/home/jiminny/vendor/league/flysystem-local/FallbackMimeTypeDetector.php\" and \"/home/jiminny/vendor/league/flysystem/src/Local/FallbackMimeTypeDetector.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\Local\\LocalFilesystemAdapterTest\" was found in both \"/home/jiminny/vendor/league/flysystem-local/LocalFilesystemAdapterTest.php\" and \"/home/jiminny/vendor/league/flysystem/src/Local/LocalFilesystemAdapterTest.php\", the first will be used.\ndocker_lamp_1 | Class Tests\\Unit\\Http\\Controllers\\API\\V2\\OnDemandV2ControllerTest located in ./tests/Unit/Http/Controllers/Api/V2/OnDemandV2ControllerTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | Class Tests\\Unit\\Notifications\\PostmarkChannelTest located in ./tests/Feature/Notifications/PostmarkChannelTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | Class Tests\\Unit\\Http\\Controllers\\API\\V2\\OnDemandV2ControllerTest located in ./tests/Unit/Http/Controllers/Api/V2/OnDemandV2ControllerTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | Class Tests\\Unit\\Notifications\\PostmarkChannelTest located in ./tests/Feature/Notifications/PostmarkChannelTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | Class RingCentral\\SDK\\WebSocket\\WebSocketSubscriptionTest located in ./vendor/ringcentral/ringcentral-php/src/WebSocket/SubscriptionTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | > Illuminate\\Foundation\\ComposerScripts::postAutoloadDump\ndocker_lamp_1 | > @php artisan package:discover --ansi\ndocker_lamp_1 | \ndocker_lamp_1 | INFO Discovering packages. \ndocker_lamp_1 | \ndocker_lamp_1 | 24slides/laravel-saml2 ................................................ DONE\ndocker_lamp_1 | aws/aws-sdk-php-laravel ............................................... DONE\ndocker_lamp_1 | barryvdh/laravel-debugbar ............................................. DONE\ndocker_lamp_1 | barryvdh/laravel-dompdf ............................................... DONE\ndocker_lamp_1 | barryvdh/laravel-ide-helper ........................................... DONE\ndocker_lamp_1 | bepsvpt/secure-headers ................................................ DONE\ndocker_lamp_1 | chaseconey/laravel-datadog-helper ..................................... DONE\ndocker_lamp_1 | devio/pipedrive ....................................................... DONE\ndocker_lamp_1 | jasonmccreary/laravel-test-assertions ................................. DONE\ndocker_lamp_1 | jdavidbakr/cloudfront-proxies ......................................... DONE\ndocker_lamp_1 | kalnoy/nestedset ...................................................... DONE\ndocker_lamp_1 | laravel/passport ...................................................... DONE\ndocker_lamp_1 | laravel/slack-notification-channel .................................... DONE\ndocker_lamp_1 | laravel/tinker ........................................................ DONE\ndocker_lamp_1 | laravel/ui ............................................................ DONE\ndocker_lamp_1 | laravolt/avatar ....................................................... DONE\ndocker_lamp_1 | league/statsd ......................................................... DONE\ndocker_lamp_1 | nesbot/carbon ......................................................... DONE\ndocker_lamp_1 | nunomaduro/collision .................................................. DONE\ndocker_lamp_1 | nunomaduro/termwind ................................................... DONE\ndocker_lamp_1 | propaganistas/laravel-phone ........................................... DONE\ndocker_lamp_1 | santigarcor/laratrust ................................................. DONE\ndocker_lamp_1 | sentry/sentry-laravel ................................................. DONE\ndocker_lamp_1 | shiftonelabs/laravel-sqs-fifo-queue ................................... DONE\ndocker_lamp_1 | spatie/laravel-fractal ................................................ DONE\ndocker_lamp_1 | spatie/laravel-ignition ............................................... DONE\ndocker_lamp_1 | spatie/laravel-webhook-server ......................................... DONE\ndocker_lamp_1 | staudenmeir/belongs-to-through ........................................ DONE\ndocker_lamp_1 | vinkla/hashids ........................................................ DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 182 packages you are using are looking for funding.\ndocker_lamp_1 | Use the `composer fund` command to find out more!\ndocker_lamp_1 | infection/extension-installer: No extensions found\ndocker_lamp_1 | > Illuminate\\Foundation\\ComposerScripts::postInstall\ndocker_lamp_1 | + /home/jiminny/scripts/migrate.sh\ndocker_lamp_1 | \ndocker_lamp_1 | INFO Nothing to migrate. \ndocker_lamp_1 | \ndocker_lamp_1 | \ndocker_lamp_1 | INFO Configuration cached successfully. \ndocker_lamp_1 | \ndocker_lamp_1 | cp: cannot stat '/home/jiminny/bootstrap/cache/config-new.php': No such file or directory\ndocker_lamp_1 | + mv /home/jiminny/.env.local.bak /home/jiminny/.env.local\ndocker_lamp_1 | + [[ false == \\f\\a\\l\\s\\e ]]\ndocker_lamp_1 | + [[ 0 -eq 1 ]]\ndocker_lamp_1 | + [[ -f /home/jiminny/storage/oauth-private.key ]]\ndocker_lamp_1 | + [[ 0 -eq 1 ]]\ndocker_lamp_1 | + setup_local_environment\ndocker_lamp_1 | + storage_permissions_workaround\ndocker_lamp_1 | + [[ false != \\t\\r\\u\\e ]]\ndocker_lamp_1 | + ln -sf /home/jiminny/storage /home/jiminny/jiminny_storage\ndocker_lamp_1 | + return\ndocker_lamp_1 | + chmod 660 /home/jiminny/storage/oauth-private.key\ndocker_lamp_1 | + chmod 775 /home/jiminny/storage/framework\ndocker_lamp_1 | + chmod 775 /home/jiminny/storage/framework/views\ndocker_lamp_1 | + chmod 775 /home/jiminny/storage/framework/cache\ndocker_lamp_1 | + chmod 775 /home/jiminny/jiminny_storage/framework\ndocker_lamp_1 | + chmod -R 775 /home/jiminny/jiminny_storage/framework/cache\ndocker_lamp_1 | + chmod -R 775 /home/jiminny/jiminny_storage/framework/views\ndocker_lamp_1 | + find /home/jiminny/storage -maxdepth 100 -exec chmod g+w '{}' ';'\n\n\nv View in Docker Desktop o View Config w Enable Watch","depth":4,"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n% \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nAttaching to blackfire-1, datadog-1, jiminny_ext-1, mariadb-1, docker_lamp_1, elasticsearch, kibana, ngrok, redis\nmariadb-1 | 2026-04-17 07:28:13+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.4.5+maria~ubu2404 started.\nredis | 1:C 17 Apr 2026 07:28:13.623 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo\nredis | 1:C 17 Apr 2026 07:28:13.625 # Redis version=5.0.14, bits=64, commit=00000000, modified=0, pid=1, just started\nredis | 1:C 17 Apr 2026 07:28:13.625 # Configuration loaded\nredis | 1:M 17 Apr 2026 07:28:13.630 * Running mode=standalone, port=6379.\nredis | 1:M 17 Apr 2026 07:28:13.630 # Server initialized\nredis | 1:M 17 Apr 2026 07:28:13.630 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.\nredis | 1:M 17 Apr 2026 07:28:13.633 * Reading RDB preamble from AOF file...\nredis | 1:M 17 Apr 2026 07:28:13.634 * Reading the remaining AOF tail...\nblackfire-1 | [2026-04-17T07:28:13Z] ERROR: The server ID parameter is not set. Please run 'blackfire-agent -register' to configure it.\nblackfire-1 | usage blackfire-agent [options]\nblackfire-1 | --collector=\"https://blackfire.io\": Sets the URL of Blackfire's data collector\nblackfire-1 | --config=\"/etc/blackfire/agent\": Sets the path to the configuration file\nblackfire-1 | -d: Prints the current configuration\nblackfire-1 | --http-proxy=\"\": Sets the HTTP proxy to use\nblackfire-1 | --https-proxy=\"\": Sets the HTTPS proxy to use\nblackfire-1 | --log-file=\"stderr\": Sets the path of the log file. Use stderr to log to stderr\nblackfire-1 | --log-level=\"1\": log verbosity level (4: debug, 3: info, 2: warning, 1: error)\nblackfire-1 | --register: Helps you with registering the agent\nblackfire-1 | --server-id=\"\": Sets the server id used to authenticate with Blackfire API\nblackfire-1 | --server-token=\"\": Sets the server token used to authenticate with Blackfire API. It is unsafe to set this from the command line\nblackfire-1 | --socket=\"unix:///var/run/blackfire/agent.sock\": Sets the socket the agent should read traces from. Possible value can be a unix socket or a TCP address. ie: unix:///var/run/blackfire/agent.sock or tcp://127.0.0.1:8307\nblackfire-1 | --test: Tests the configuration\nblackfire-1 | --timeout=\"15s\": Sets the Blackfire connection timeout\nblackfire-1 | -v: Prints the version number\nngrok | t=2026-04-17T07:28:13+0000 lvl=info msg=\"no configuration paths supplied\"\nngrok | t=2026-04-17T07:28:13+0000 lvl=info msg=\"using configuration at default config path\" path=/home/ngrok/.ngrok2/ngrok.yml\nngrok | t=2026-04-17T07:28:13+0000 lvl=info msg=\"open config file\" path=/home/ngrok/.ngrok2/ngrok.yml err=nil\nblackfire-1 exited with code 1\nngrok | t=2026-04-17T07:28:13+0000 lvl=info msg=\"starting web service\" obj=web addr=0.0.0.0:4040\njiminny_ext-1 exited with code 0\ndocker_lamp_1 | + main\ndocker_lamp_1 | + declare START_DIR\ndocker_lamp_1 | +++ realpath /scripts/init-dev\ndocker_lamp_1 | ++ dirname /scripts/init-dev\ndocker_lamp_1 | + START_DIR=/scripts\ndocker_lamp_1 | + readonly START_DIR\ndocker_lamp_1 | + source /scripts/storage_init.sh\ndocker_lamp_1 | ++ set -o errexit\ndocker_lamp_1 | ++ set -o nounset\ndocker_lamp_1 | ++ set -o pipefail\ndocker_lamp_1 | + create_bind_mount\ndocker_lamp_1 | + [[ 0 == \\1 ]]\ndocker_lamp_1 | + configure_xdebug\ndocker_lamp_1 | + j2 /root/.j2_templates/xdebug/xdebug.ini.j2\nmariadb-1 | 2026-04-17 07:28:14+00:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB\nmariadb-1 | 2026-04-17 07:28:14+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'\nngrok | t=2026-04-17T07:28:14+0000 lvl=info msg=\"tunnel session started\" obj=tunnels.session\nngrok | t=2026-04-17T07:28:14+0000 lvl=info msg=\"client session established\" obj=csess id=34de209b437c\nmariadb-1 | 2026-04-17 07:28:14+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.4.5+maria~ubu2404 started.\nngrok | t=2026-04-17T07:28:14+0000 lvl=info msg=\"started tunnel\" obj=tunnels name=\"command_line (http)\" addr=http://lamp:3080 url=http://lukask.ngrok.io\nngrok | t=2026-04-17T07:28:14+0000 lvl=info msg=\"started tunnel\" obj=tunnels name=command_line addr=http://lamp:3080 url=https://lukask.ngrok.io\ndatadog-1 | [s6-init] making user provided files available at /var/run/s6/etc...exited 0.\nmariadb-1 | 2026-04-17 07:28:15+00:00 [Note] [Entrypoint]: MariaDB upgrade information missing, assuming required\nmariadb-1 | 2026-04-17 07:28:15+00:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] Starting MariaDB 11.4.5-MariaDB-ubu2404 source revision 0771110266ff5c04216af4bf1243c65f8c67ccf4 server_uid LEIUY8nWIgtXzFZ8Uo7xi+G0Q88= as process 1\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Compressed tables use zlib 1.3\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Number of transaction pools: 1\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Using ARMv8 crc32 + pmull instructions\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Using liburing\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Completed initialization of buffer pool\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: End of log at LSN=7522656703\nngrok | t=2026-04-17T07:28:15+0000 lvl=info msg=\"update available\" obj=updater\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Opened 3 undo tablespaces\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: log sequence number 7522656703; transaction id 11384091\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] Plugin 'FEEDBACK' is disabled.\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] Plugin 'wsrep-provider' is disabled.\ndocker_lamp_1 | + configure_blackfire\ndocker_lamp_1 | + j2 /root/.j2_templates/blackfire/extension.ini.j2\ndocker_lamp_1 | + j2 /root/.j2_templates/blackfire/cli.ini.j2\ndocker_lamp_1 | + declare EMPTY_DB\ndocker_lamp_1 | + db_is_empty\ndocker_lamp_1 | ++ find /var/lib/mysql/ -maxdepth 1\ndocker_lamp_1 | ++ wc -l\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Buffer pool(s) load completed at 260417 7:28:15\ndocker_lamp_1 | + [[ 11 -lt 5 ]]\ndocker_lamp_1 | + EMPTY_DB=0\ndocker_lamp_1 | + readonly EMPTY_DB\ndocker_lamp_1 | + [[ 0 -eq 1 ]]\ndocker_lamp_1 | + [[ local == \\l\\o\\c\\a\\l ]]\ndocker_lamp_1 | + set_nginx_domain dev.jiminny.com\ndocker_lamp_1 | + declare -r DOMAIN_NAME=dev.jiminny.com\ndocker_lamp_1 | + cp -f /etc/nginx/nginx_template.conf /etc/nginx/nginx.conf\ndocker_lamp_1 | + sed -i -E s~_JIMINNY_DOMAIN~app.dev.jiminny.com~g /etc/nginx/nginx.conf\ndocker_lamp_1 | + sed -i -E s~_JIMINNY_EXT_DOMAIN~ext.dev.jiminny.com~g /etc/nginx/nginx.conf\ndocker_lamp_1 | + sed -i -E s~_JIMINNY_WEB_DOMAIN~www.dev.jiminny.com~g /etc/nginx/nginx.conf\ndocker_lamp_1 | + [[ -n 3399 ]]\ndocker_lamp_1 | + sed -i -E 's~http:\\/\\/jiminny_ext:8080~http://jiminny_ext:3399~g' /etc/nginx/nginx.conf\ndocker_lamp_1 | + [[ -n host.docker.internal ]]\ndocker_lamp_1 | + sed -i -E 's~http:\\/\\/jiminny_ext~http://host.docker.internal~g' /etc/nginx/nginx.conf\ndocker_lamp_1 | + build_dev\ndocker_lamp_1 | + cd /home/jiminny/\ndocker_lamp_1 | + create_dot_env_local_file\ndocker_lamp_1 | + cp -f /home/jiminny/.env.local /home/jiminny/.env.local.bak\ndocker_lamp_1 | + create_dot_env\ndocker_lamp_1 | + [[ -f /home/jiminny/.env ]]\ndocker_lamp_1 | + return\ndocker_lamp_1 | + declare DB_ADMIN_PASSWORD\ndocker_lamp_1 | + declare DB_ADMIN_USERNAME\ndocker_lamp_1 | + declare DB_DEV_PASSWORD\ndocker_lamp_1 | + declare DB_DEV_USERNAME\ndocker_lamp_1 | + declare DB_ROOT_PASSWORD\ndocker_lamp_1 | + declare DB_ROOT_USERNAME\ndocker_lamp_1 | + declare DB_WEB_PASSWORD\ndocker_lamp_1 | + declare DB_WEB_USERNAME\ndocker_lamp_1 | ++ jq -r .DB_ADMIN_PASSWORD /home/jiminny/dev.json\ndocker_lamp_1 | + DB_ADMIN_PASSWORD='dgyt$rTe21-d'\ndocker_lamp_1 | ++ jq -r .DB_ADMIN_USERNAME /home/jiminny/dev.json\ndocker_lamp_1 | + DB_ADMIN_USERNAME=jmnyadmin\ndocker_lamp_1 | ++ jq -r .DB_DEV_PASSWORD /home/jiminny/dev.json\ndocker_lamp_1 | + DB_DEV_PASSWORD=rTr4sdQA65-Ad\ndocker_lamp_1 | ++ jq -r .DB_DEV_USERNAME /home/jiminny/dev.json\ndatadog-1 | [s6-init] ensuring user provided files have correct perms...exited 0.\ndocker_lamp_1 | + DB_DEV_USERNAME=jmnydev\ndocker_lamp_1 | ++ jq -r .DB_ROOT_PASSWORD /home/jiminny/dev.json\ndatadog-1 | [fix-attrs.d] applying ownership & permissions fixes...\ndocker_lamp_1 | + DB_ROOT_PASSWORD=b7h5-1fH3e54J\ndocker_lamp_1 | ++ jq -r .DB_ROOT_USERNAME /home/jiminny/dev.json\ndatadog-1 | [fix-attrs.d] done.\ndocker_lamp_1 | + DB_ROOT_USERNAME=root\ndocker_lamp_1 | ++ jq -r .DB_WEB_PASSWORD /home/jiminny/dev.json\ndatadog-1 | [cont-init.d] executing container initialization scripts...\ndocker_lamp_1 | + DB_WEB_PASSWORD=aR5-EWf23b8da\ndocker_lamp_1 | ++ jq -r .DB_WEB_USERNAME /home/jiminny/dev.json\ndatadog-1 | [cont-init.d] 01-check-apikey.sh: executing... \ndocker_lamp_1 | + DB_WEB_USERNAME=jmnyweb\ndocker_lamp_1 | + readonly DB_ADMIN_PASSWORD\ndocker_lamp_1 | + readonly DB_ADMIN_USERNAME\ndocker_lamp_1 | + readonly DB_DEV_PASSWORD\ndocker_lamp_1 | + readonly DB_DEV_USERNAME\ndocker_lamp_1 | + readonly DB_ROOT_PASSWORD\ndocker_lamp_1 | + readonly DB_ROOT_USERNAME\ndocker_lamp_1 | + readonly DB_WEB_PASSWORD\ndocker_lamp_1 | + readonly DB_WEB_USERNAME\ndocker_lamp_1 | + sed -i -E 's~DB_USERNAME=.*$~DB_USERNAME=jmnyadmin~g' /home/jiminny/.env\ndocker_lamp_1 | + sed -i -E 's~DB_PASSWORD=.*$~DB_PASSWORD=dgyt$rTe21-d~g' /home/jiminny/.env\nmariadb-1 | 2026-04-17 7:28:16 0 [Note] Server socket created on IP: '0.0.0.0'.\nmariadb-1 | 2026-04-17 7:28:16 0 [Note] Server socket created on IP: '::'.\ndocker_lamp_1 | + sed -i -E 's~DB_HOST=.*$~DB_HOST=mariadb~g' /home/jiminny/.env\ndocker_lamp_1 | + cp -f /home/jiminny/.env /home/jiminny/.env.root\ndocker_lamp_1 | + cp -f /home/jiminny/.env /home/jiminny/.env.migrate\ndocker_lamp_1 | + sed -i -E 's~DB_PASSWORD=.*$~DB_PASSWORD=b7h5-1fH3e54J~g' /home/jiminny/.env.migrate\ndocker_lamp_1 | + sed -i -E 's~DB_PASSWORD=.*$~DB_PASSWORD=b7h5-1fH3e54J~g' /home/jiminny/.env.root\ndocker_lamp_1 | + sed -i -E 's~DB_USERNAME=.*$~DB_USERNAME=root~g' /home/jiminny/.env.migrate\ndocker_lamp_1 | + sed -i -E 's~DB_USERNAME=.*$~DB_USERNAME=root~g' /home/jiminny/.env.root\nmariadb-1 | 2026-04-17 7:28:16 0 [Note] mariadbd: Event Scheduler: Loaded 0 events\ndatadog-1 | \ndatadog-1 | ==================================================================================\ndatadog-1 | You must set an DD_API_KEY environment variable to run the Datadog Agent container\ndatadog-1 | ==================================================================================\ndatadog-1 | \ndocker_lamp_1 | + cp -f /home/jiminny/.env /home/jiminny/.env.local\nmariadb-1 | 2026-04-17 7:28:16 0 [Note] mariadbd: ready for connections.\nmariadb-1 | Version: '11.4.5-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution\ndocker_lamp_1 | + echo ''\ndocker_lamp_1 | + echo 'DB_ADMIN_PASSWORD=dgyt$rTe21-d'\ndocker_lamp_1 | + echo DB_ADMIN_USERNAME=jmnyadmin\ndocker_lamp_1 | + echo DB_DEV_PASSWORD=rTr4sdQA65-Ad\ndocker_lamp_1 | + echo DB_DEV_USERNAME=jmnydev\ndocker_lamp_1 | + echo DB_ROOT_PASSWORD=b7h5-1fH3e54J\ndocker_lamp_1 | + echo DB_ROOT_USERNAME=root\ndocker_lamp_1 | + echo DB_WEB_PASSWORD=aR5-EWf23b8da\ndocker_lamp_1 | + echo DB_WEB_USERNAME=jmnyweb\ndocker_lamp_1 | + [[ false == \\f\\a\\l\\s\\e ]]\ndocker_lamp_1 | + declare COMPOSER_PARAM=--prefer-dist\ndocker_lamp_1 | + [[ 0 -eq 1 ]]\ndocker_lamp_1 | + composer install --prefer-dist\ndatadog-1 | [cont-init.d] 01-check-apikey.sh: exited 1.\ndatadog-1 exited with code 1\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:18,579Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"version[7.10.2], pid[6], build[default/docker/747e1cc71def077253878a59143c1f785afa92b9/2021-01-13T04:42:47.157277Z], OS[Linux/6.12.54-linuxkit/aarch64], JVM[AdoptOpenJDK/OpenJDK 64-Bit Server VM/15.0.1/15.0.1+9]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:18,581Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"JVM home [/usr/share/elasticsearch/jdk], using bundled JDK [true]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:18,581Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"JVM arguments [-Xshare:auto, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -XX:+ShowCodeDetailsInExceptionMessages, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dio.netty.allocator.numDirectArenas=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.locale.providers=SPI,COMPAT, -Xms1g, -Xmx1g, -XX:+UseG1GC, -XX:G1ReservePercent=25, -XX:InitiatingHeapOccupancyPercent=30, -Djava.io.tmpdir=/tmp/elasticsearch-2077775440550164101, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m, -Des.cgroups.hierarchy.override=/, -Xms700m, -Xmx700m, -XX:MaxDirectMemorySize=367001600, -Des.path.home=/usr/share/elasticsearch, -Des.path.conf=/usr/share/elasticsearch/config, -Des.distribution.flavor=default, -Des.distribution.type=docker, -Des.bundled_jdk=true]\" }\ndocker_lamp_1 | Installing dependencies from lock file (including require-dev)\ndocker_lamp_1 | Verifying lock file contents can be installed on current platform.\ndocker_lamp_1 | Nothing to install, update or remove\ndocker_lamp_1 | Package doctrine/annotations is abandoned, you should avoid using it. No replacement was suggested.\ndocker_lamp_1 | Package symfony/debug is abandoned, you should avoid using it. Use symfony/error-handler instead.\ndocker_lamp_1 | Generating optimized autoload files\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,937Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [aggs-matrix-stats]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,938Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [analysis-common]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,938Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [constant-keyword]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,938Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [flattened]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,938Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [frozen-indices]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [ingest-common]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [ingest-geoip]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [ingest-user-agent]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [kibana]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [lang-expression]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,940Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [lang-mustache]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,940Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [lang-painless]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,941Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [mapper-extras]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,941Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [mapper-version]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,941Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [parent-join]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,941Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [percolator]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [rank-eval]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [reindex]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [repositories-metering-api]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [repository-url]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [search-business-rules]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [searchable-snapshots]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [spatial]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [transform]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [transport-netty4]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [unsigned-long]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [vectors]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [wildcard]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-analytics]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-async]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-async-search]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-autoscaling]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-ccr]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-core]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-data-streams]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-deprecation]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-enrich]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-eql]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-graph]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-identity-provider]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-ilm]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-logstash]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-ml]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-monitoring]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-ql]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-rollup]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-security]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-sql]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-stack]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-voting-only-node]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-watcher]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,946Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"no plugins loaded\" }\nelasticsearch | {\"type\": \"deprecation\", \"timestamp\": \"2026-04-17T07:28:22,065Z\", \"level\": \"DEPRECATION\", \"component\": \"o.e.d.c.s.Settings\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[node.data] setting was deprecated in Elasticsearch and will be removed in a future release! See the breaking changes documentation for the next major version.\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:22,090Z\", \"level\": \"INFO\", \"component\": \"o.e.e.NodeEnvironment\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"using [1] data paths, mounts [[/usr/share/elasticsearch/data (/dev/vda1)]], net usable_space [14.8gb], net total_space [58.3gb], types [ext4]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:22,091Z\", \"level\": \"INFO\", \"component\": \"o.e.e.NodeEnvironment\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"heap size [700mb], compressed ordinary object pointers [true]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:22,256Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"node name [e802ad473a4f], node ID [e2ZKzgw4Q4aCf2w5ljWr1A], cluster name [docker-cluster], roles [transform, master, remote_cluster_client, data, ml, data_content, data_hot, data_warm, data_cold, ingest]\" }\nredis | 1:M 17 Apr 2026 07:28:28.232 * DB loaded from append only file: 14.601 seconds\nredis | 1:M 17 Apr 2026 07:28:28.232 * Ready to accept connections\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:29,740Z\", \"level\": \"INFO\", \"component\": \"o.e.x.m.p.l.CppLogMessageHandler\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[controller/213] [Main.cc@114] controller (64 bit): Version 7.10.2 (Build 40a3af639d4698) Copyright (c) 2020 Elasticsearch BV\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:31,936Z\", \"level\": \"INFO\", \"component\": \"o.e.t.NettyAllocator\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"creating NettyAllocator with the following configs: [name=unpooled, suggested_max_allocation_size=256kb, factors={es.unsafe.use_unpooled_allocator=null, g1gc_enabled=true, g1gc_region_size=1mb, heap_size=700mb}]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:32,217Z\", \"level\": \"INFO\", \"component\": \"o.e.d.DiscoveryModule\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"using discovery type [single-node] and seed hosts providers [settings]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:33,367Z\", \"level\": \"WARN\", \"component\": \"o.e.g.DanglingIndicesState\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"gateway.auto_import_dangling_indices is disabled, dangling indices will not be automatically detected or imported and must be managed manually\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:34,469Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"initialized\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:34,470Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"starting ...\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:34,818Z\", \"level\": \"INFO\", \"component\": \"o.e.t.TransportService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"publish_address {172.18.0.7:9300}, bound_addresses {[::]:9300}\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:35,545Z\", \"level\": \"INFO\", \"component\": \"o.e.c.c.Coordinator\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"cluster UUID [8uh2w1CUSGyWYR_OvaKx6g]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:35,815Z\", \"level\": \"INFO\", \"component\": \"o.e.c.s.MasterService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"elected-as-master ([1] nodes joined)[{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{172.18.0.7}{172.18.0.7:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20} elect leader, _BECOME_MASTER_TASK_, _FINISH_ELECTION_], term: 222, version: 8367, delta: master node changed {previous [], current [{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{172.18.0.7}{172.18.0.7:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:36,253Z\", \"level\": \"INFO\", \"component\": \"o.e.c.s.ClusterApplierService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"master node changed {previous [], current [{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{172.18.0.7}{172.18.0.7:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}, term: 222, version: 8367, reason: Publication{term=222, version=8367}\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:36,419Z\", \"level\": \"INFO\", \"component\": \"o.e.h.AbstractHttpServerTransport\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"publish_address {172.18.0.7:9200}, bound_addresses {[::]:9200}\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:36,420Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"started\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:37,479Z\", \"level\": \"INFO\", \"component\": \"o.e.l.LicenseService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"license [85e882e5-5714-4173-a5dd-9baa841494a0] mode [basic] - valid\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:37,500Z\", \"level\": \"INFO\", \"component\": \"o.e.g.GatewayService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"recovered [15] indices into cluster_state\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:45,368Z\", \"level\": \"INFO\", \"component\": \"o.e.c.r.a.AllocationService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"Cluster health status changed from [RED] to [YELLOW] (reason: [shards started [[activities_testing][0]]]).\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:21Z\",\"tags\":[\"info\",\"plugins-service\"],\"pid\":7,\"message\":\"Plugin \\\"visTypeXy\\\" is disabled.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:21Z\",\"tags\":[\"info\",\"plugins-service\"],\"pid\":7,\"message\":\"Plugin \\\"auditTrail\\\" is disabled.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:21Z\",\"tags\":[\"warning\",\"config\",\"deprecation\"],\"pid\":7,\"message\":\"Config key [monitoring.cluster_alerts.email_notifications.email_address] will be required for email notifications to work in 8.0.\\\"\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:21Z\",\"tags\":[\"info\",\"plugins-system\"],\"pid\":7,\"message\":\"Setting up [96] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,code,mapsLegacy,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,newsfeed,kibanaLegacy,translations,share,legacyExport,embeddable,uiActionsEnhanced,expressions,data,home,observability,cloud,apmOss,console,consoleExtensions,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,dashboard,visualizations,visTypeTimelion,timelion,features,upgradeAssistant,security,snapshotRestore,encryptedSavedObjects,ingestManager,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,dashboardMode,beatsManagement,transform,ingestPipelines,maps,licenseManagement,graph,dataEnhanced,visTypeVega,visTypeTable,visTypeMarkdown,tileMap,regionMap,inputControlVis,visualize,esUiShared,charts,lens,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,discover,discoverEnhanced,savedObjectsManagement,spaces,reporting,lists,eventLog,actions,case,alerts,stackAlerts,triggersActionsUi,ml,securitySolution,infra,monitoring,logstash,apm,uptime,bfetch,canvas]\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"security\",\"config\"],\"pid\":7,\"message\":\"Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.yml\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"security\",\"config\"],\"pid\":7,\"message\":\"Session cookies will be transmitted over insecure connections. This is not recommended.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"encryptedSavedObjects\",\"config\"],\"pid\":7,\"message\":\"Generating a random key for xpack.encryptedSavedObjects.encryptionKey. To be able to decrypt encrypted saved objects attributes after restart, please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"ingestManager\"],\"pid\":7,\"message\":\"Fleet APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"reporting\",\"config\"],\"pid\":7,\"message\":\"Generating a random key for xpack.reporting.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.reporting.encryptionKey in kibana.yml\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"reporting\",\"config\"],\"pid\":7,\"message\":\"Found 'server.host: \\\"0\\\"' in Kibana configuration. This is incompatible with Reporting. To enable Reporting to work, 'xpack.reporting.kibanaServer.hostname: 0.0.0.0' is being automatically to the configuration. You can change the setting to 'server.host: 0.0.0.0' or add 'xpack.reporting.kibanaServer.hostname: 0.0.0.0' in kibana.yml to prevent this message.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"reporting\",\"config\"],\"pid\":7,\"message\":\"Chromium sandbox provides an additional layer of protection, but is not supported for Linux CentOS 8.3.2011\\n OS. Automatically setting 'xpack.reporting.capture.browser.chromium.disableSandbox: true'.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"actions\",\"actions\"],\"pid\":7,\"message\":\"APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:23Z\",\"tags\":[\"warning\",\"plugins\",\"alerts\",\"plugins\",\"alerting\"],\"pid\":7,\"message\":\"APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:23Z\",\"tags\":[\"info\",\"plugins\",\"monitoring\",\"monitoring\"],\"pid\":7,\"message\":\"config sourced from: production cluster\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:23Z\",\"tags\":[\"info\",\"savedobjects-service\"],\"pid\":7,\"message\":\"Waiting until all Elasticsearch nodes are compatible with Kibana before starting saved objects migrations...\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:23Z\",\"tags\":[\"info\",\"savedobjects-service\"],\"pid\":7,\"message\":\"Starting saved objects migrations\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins-system\"],\"pid\":7,\"message\":\"Starting [96] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,code,mapsLegacy,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,newsfeed,kibanaLegacy,translations,share,legacyExport,embeddable,uiActionsEnhanced,expressions,data,home,observability,cloud,apmOss,console,consoleExtensions,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,dashboard,visualizations,visTypeTimelion,timelion,features,upgradeAssistant,security,snapshotRestore,encryptedSavedObjects,ingestManager,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,dashboardMode,beatsManagement,transform,ingestPipelines,maps,licenseManagement,graph,dataEnhanced,visTypeVega,visTypeTable,visTypeMarkdown,tileMap,regionMap,inputControlVis,visualize,esUiShared,charts,lens,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,discover,discoverEnhanced,savedObjectsManagement,spaces,reporting,lists,eventLog,actions,case,alerts,stackAlerts,triggersActionsUi,ml,securitySolution,infra,monitoring,logstash,apm,uptime,bfetch,canvas]\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins\",\"taskManager\",\"taskManager\"],\"pid\":7,\"message\":\"TaskManager is identified by the Kibana UUID: bf01f365-e094-4cde-940d-3e0db65fa22a\"}\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:29:24,796Z\", \"level\": \"INFO\", \"component\": \"o.e.c.m.MetadataIndexTemplateService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"adding template [.management-beats] for index patterns [.management-beats]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins\",\"crossClusterReplication\"],\"pid\":7,\"message\":\"Your basic license does not support crossClusterReplication. Please upgrade your license.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins\",\"watcher\"],\"pid\":7,\"message\":\"Your basic license does not support watcher. Please upgrade your license.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins\",\"monitoring\",\"monitoring\",\"kibana-monitoring\"],\"pid\":7,\"message\":\"Starting monitoring stats collection\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:endpoint:user-artifact-packager:1.0.0]: version conflict, document already exists (current version [307637])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:Actions-actions_telemetry]: version conflict, document already exists (current version [733])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:apm-telemetry-task]: version conflict, document already exists (current version [1210])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:Alerting-alerting_telemetry]: version conflict, document already exists (current version [733])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:Lens-lens_telemetry]: version conflict, document already exists (current version [733])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:26Z\",\"tags\":[\"listening\",\"info\"],\"pid\":7,\"message\":\"Server running at http://0:5601\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:28Z\",\"tags\":[\"info\",\"http\",\"server\",\"Kibana\"],\"pid\":7,\"message\":\"http server running at http://0:5601\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:30Z\",\"tags\":[\"warning\",\"plugins\",\"reporting\"],\"pid\":7,\"message\":\"Enabling the Chromium sandbox provides an additional layer of protection.\"}\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"Microsoft\\Graph\\Generated\\Models\\AudioConferencing\" was found in both \"/home/jiminny/app/Services/MeetingGenerator/Overrides/Microsoft/Graph/Generated/Models/AudioConferencing.php\" and \"/home/jiminny/vendor/microsoft/microsoft-graph/src/Generated/Models/AudioConferencing.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\AwsS3V3\\AwsS3V3Adapter\" was found in both \"/home/jiminny/vendor/league/flysystem-aws-s3-v3/AwsS3V3Adapter.php\" and \"/home/jiminny/vendor/league/flysystem/src/AwsS3V3/AwsS3V3Adapter.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\AwsS3V3\\PortableVisibilityConverter\" was found in both \"/home/jiminny/vendor/league/flysystem-aws-s3-v3/PortableVisibilityConverter.php\" and \"/home/jiminny/vendor/league/flysystem/src/AwsS3V3/PortableVisibilityConverter.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\AwsS3V3\\VisibilityConverter\" was found in both \"/home/jiminny/vendor/league/flysystem-aws-s3-v3/VisibilityConverter.php\" and \"/home/jiminny/vendor/league/flysystem/src/AwsS3V3/VisibilityConverter.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\Local\\LocalFilesystemAdapter\" was found in both \"/home/jiminny/vendor/league/flysystem-local/LocalFilesystemAdapter.php\" and \"/home/jiminny/vendor/league/flysystem/src/Local/LocalFilesystemAdapter.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\Local\\FallbackMimeTypeDetector\" was found in both \"/home/jiminny/vendor/league/flysystem-local/FallbackMimeTypeDetector.php\" and \"/home/jiminny/vendor/league/flysystem/src/Local/FallbackMimeTypeDetector.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\Local\\LocalFilesystemAdapterTest\" was found in both \"/home/jiminny/vendor/league/flysystem-local/LocalFilesystemAdapterTest.php\" and \"/home/jiminny/vendor/league/flysystem/src/Local/LocalFilesystemAdapterTest.php\", the first will be used.\ndocker_lamp_1 | Class Tests\\Unit\\Http\\Controllers\\API\\V2\\OnDemandV2ControllerTest located in ./tests/Unit/Http/Controllers/Api/V2/OnDemandV2ControllerTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | Class Tests\\Unit\\Notifications\\PostmarkChannelTest located in ./tests/Feature/Notifications/PostmarkChannelTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | Class Tests\\Unit\\Http\\Controllers\\API\\V2\\OnDemandV2ControllerTest located in ./tests/Unit/Http/Controllers/Api/V2/OnDemandV2ControllerTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | Class Tests\\Unit\\Notifications\\PostmarkChannelTest located in ./tests/Feature/Notifications/PostmarkChannelTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | Class RingCentral\\SDK\\WebSocket\\WebSocketSubscriptionTest located in ./vendor/ringcentral/ringcentral-php/src/WebSocket/SubscriptionTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | > Illuminate\\Foundation\\ComposerScripts::postAutoloadDump\ndocker_lamp_1 | > @php artisan package:discover --ansi\ndocker_lamp_1 | \ndocker_lamp_1 | INFO Discovering packages. \ndocker_lamp_1 | \ndocker_lamp_1 | 24slides/laravel-saml2 ................................................ DONE\ndocker_lamp_1 | aws/aws-sdk-php-laravel ............................................... DONE\ndocker_lamp_1 | barryvdh/laravel-debugbar ............................................. DONE\ndocker_lamp_1 | barryvdh/laravel-dompdf ............................................... DONE\ndocker_lamp_1 | barryvdh/laravel-ide-helper ........................................... DONE\ndocker_lamp_1 | bepsvpt/secure-headers ................................................ DONE\ndocker_lamp_1 | chaseconey/laravel-datadog-helper ..................................... DONE\ndocker_lamp_1 | devio/pipedrive ....................................................... DONE\ndocker_lamp_1 | jasonmccreary/laravel-test-assertions ................................. DONE\ndocker_lamp_1 | jdavidbakr/cloudfront-proxies ......................................... DONE\ndocker_lamp_1 | kalnoy/nestedset ...................................................... DONE\ndocker_lamp_1 | laravel/passport ...................................................... DONE\ndocker_lamp_1 | laravel/slack-notification-channel .................................... DONE\ndocker_lamp_1 | laravel/tinker ........................................................ DONE\ndocker_lamp_1 | laravel/ui ............................................................ DONE\ndocker_lamp_1 | laravolt/avatar ....................................................... DONE\ndocker_lamp_1 | league/statsd ......................................................... DONE\ndocker_lamp_1 | nesbot/carbon ......................................................... DONE\ndocker_lamp_1 | nunomaduro/collision .................................................. DONE\ndocker_lamp_1 | nunomaduro/termwind ................................................... DONE\ndocker_lamp_1 | propaganistas/laravel-phone ........................................... DONE\ndocker_lamp_1 | santigarcor/laratrust ................................................. DONE\ndocker_lamp_1 | sentry/sentry-laravel ................................................. DONE\ndocker_lamp_1 | shiftonelabs/laravel-sqs-fifo-queue ................................... DONE\ndocker_lamp_1 | spatie/laravel-fractal ................................................ DONE\ndocker_lamp_1 | spatie/laravel-ignition ............................................... DONE\ndocker_lamp_1 | spatie/laravel-webhook-server ......................................... DONE\ndocker_lamp_1 | staudenmeir/belongs-to-through ........................................ DONE\ndocker_lamp_1 | vinkla/hashids ........................................................ DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 182 packages you are using are looking for funding.\ndocker_lamp_1 | Use the `composer fund` command to find out more!\ndocker_lamp_1 | infection/extension-installer: No extensions found\ndocker_lamp_1 | > Illuminate\\Foundation\\ComposerScripts::postInstall\ndocker_lamp_1 | + /home/jiminny/scripts/migrate.sh\ndocker_lamp_1 | \ndocker_lamp_1 | INFO Nothing to migrate. \ndocker_lamp_1 | \ndocker_lamp_1 | \ndocker_lamp_1 | INFO Configuration cached successfully. \ndocker_lamp_1 | \ndocker_lamp_1 | cp: cannot stat '/home/jiminny/bootstrap/cache/config-new.php': No such file or directory\ndocker_lamp_1 | + mv /home/jiminny/.env.local.bak /home/jiminny/.env.local\ndocker_lamp_1 | + [[ false == \\f\\a\\l\\s\\e ]]\ndocker_lamp_1 | + [[ 0 -eq 1 ]]\ndocker_lamp_1 | + [[ -f /home/jiminny/storage/oauth-private.key ]]\ndocker_lamp_1 | + [[ 0 -eq 1 ]]\ndocker_lamp_1 | + setup_local_environment\ndocker_lamp_1 | + storage_permissions_workaround\ndocker_lamp_1 | + [[ false != \\t\\r\\u\\e ]]\ndocker_lamp_1 | + ln -sf /home/jiminny/storage /home/jiminny/jiminny_storage\ndocker_lamp_1 | + return\ndocker_lamp_1 | + chmod 660 /home/jiminny/storage/oauth-private.key\ndocker_lamp_1 | + chmod 775 /home/jiminny/storage/framework\ndocker_lamp_1 | + chmod 775 /home/jiminny/storage/framework/views\ndocker_lamp_1 | + chmod 775 /home/jiminny/storage/framework/cache\ndocker_lamp_1 | + chmod 775 /home/jiminny/jiminny_storage/framework\ndocker_lamp_1 | + chmod -R 775 /home/jiminny/jiminny_storage/framework/cache\ndocker_lamp_1 | + chmod -R 775 /home/jiminny/jiminny_storage/framework/views\ndocker_lamp_1 | + find /home/jiminny/storage -maxdepth 100 -exec chmod g+w '{}' ';'\n\n\nv View in Docker Desktop o View Config w Enable Watch","is_focused":true},{"role":"AXButton","text":"Menu","depth":3,"bounds":{"left":0.48472223,"top":0.08944444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥1 DOCKER (docker-compose)","depth":3,"bounds":{"left":0.01875,"top":0.09,"width":0.4625,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod\n(lukas@jiminny-prod-bastion) Verification code: \nWelcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Fri Apr 17 05:56:21 UTC 2026\n\n System load: 0.0 Processes: 123\n Usage of /: 59.3% of 7.57GB Users logged in: 1\n Memory usage: 34% IPv4 address for eth0: 10.30.45.167\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n42 updates can be applied immediately.\n10 of these updates are standard security updates.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu Apr 16 06:55:09 2026 from 212.39.71.189\nlukas@jiminny-prod-bastion:~$","depth":5,"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod\n(lukas@jiminny-prod-bastion) Verification code: \nWelcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Fri Apr 17 05:56:21 UTC 2026\n\n System load: 0.0 Processes: 123\n Usage of /: 59.3% of 7.57GB Users logged in: 1\n Memory usage: 34% IPv4 address for eth0: 10.30.45.167\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n42 updates can be applied immediately.\n10 of these updates are standard security updates.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu Apr 16 06:55:09 2026 from 212.39.71.189\nlukas@jiminny-prod-bastion:~$","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98541665,"top":0.08944444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥2 PROD (ssh)","depth":4,"bounds":{"left":0.51875,"top":0.09,"width":0.46319443,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ eu\n(lukas@jiminny-eu-bastion) Verification code: \nWelcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1047-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Fri Apr 17 05:56:31 UTC 2026\n\n System load: 0.0 Processes: 118\n Usage of /: 58.0% of 7.57GB Users logged in: 1\n Memory usage: 18% IPv4 address for eth0: 10.20.163.228\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n90 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu Apr 16 06:55:03 2026 from 212.39.71.189\nlukas@jiminny-eu-bastion:~$","depth":5,"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ eu\n(lukas@jiminny-eu-bastion) Verification code: \nWelcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1047-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Fri Apr 17 05:56:31 UTC 2026\n\n System load: 0.0 Processes: 118\n Usage of /: 58.0% of 7.57GB Users logged in: 1\n Memory usage: 18% IPv4 address for eth0: 10.20.163.228\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n90 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu Apr 16 06:55:03 2026 from 212.39.71.189\nlukas@jiminny-eu-bastion:~$","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98541665,"top":0.23944445,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥3 EU (ssh)","depth":4,"bounds":{"left":0.51875,"top":0.24,"width":0.46319443,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5,"top":0.43222222,"width":0.48958334,"height":0.12222222},"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true}]...
|
9165978701348137727
|
-7477059490927161586
|
app_switch
|
accessibility
|
NULL
|
Last login: Thu Apr 16 15:43:43 on console
Poetry Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
%
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
Attaching to blackfire-1, datadog-1, jiminny_ext-1, mariadb-1, docker_lamp_1, elasticsearch, kibana, ngrok, redis
mariadb-1 | 2026-04-17 07:28:13+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.4.5+maria~ubu2404 started.
redis | 1:C 17 Apr 2026 07:28:13.623 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis | 1:C 17 Apr 2026 07:28:13.625 # Redis version=5.0.14, bits=64, commit=00000000, modified=0, pid=1, just started
redis | 1:C 17 Apr 2026 07:28:13.625 # Configuration loaded
redis | 1:M 17 Apr 2026 07:28:13.630 * Running mode=standalone, port=6379.
redis | 1:M 17 Apr 2026 07:28:13.630 # Server initialized
redis | 1:M 17 Apr 2026 07:28:13.630 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
redis | 1:M 17 Apr 2026 07:28:13.633 * Reading RDB preamble from AOF file...
redis | 1:M 17 Apr 2026 07:28:13.634 * Reading the remaining AOF tail...
blackfire-1 | [2026-04-17T07:28:13Z] ERROR: The server ID parameter is not set. Please run 'blackfire-agent -register' to configure it.
blackfire-1 | usage blackfire-agent [options]
blackfire-1 | --collector="[URL_WITH_CREDENTIALS] controller (64 bit): Version 7.10.2 (Build 40a3af639d4698) Copyright (c) 2020 Elasticsearch BV" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:31,936Z", "level": "INFO", "component": "o.e.t.NettyAllocator", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "creating NettyAllocator with the following configs: [name=unpooled, suggested_max_allocation_size=256kb, factors={es.unsafe.use_unpooled_allocator=null, g1gc_enabled=true, g1gc_region_size=1mb, heap_size=700mb}]" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:32,217Z", "level": "INFO", "component": "o.e.d.DiscoveryModule", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "using discovery type [single-node] and seed hosts providers [settings]" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:33,367Z", "level": "WARN", "component": "o.e.g.DanglingIndicesState", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "gateway.auto_import_dangling_indices is disabled, dangling indices will not be automatically detected or imported and must be managed manually" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:34,469Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "initialized" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:34,470Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "starting ..." }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:34,818Z", "level": "INFO", "component": "o.e.t.TransportService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "publish_address {[IP_ADDRESS]:9300}, bound_addresses {[::]:9300}" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:35,545Z", "level": "INFO", "component": "o.e.c.c.Coordinator", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "cluster UUID [8uh2w1CUSGyWYR_OvaKx6g]" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:35,815Z", "level": "INFO", "component": "o.e.c.s.MasterService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "elected-as-master ([1] nodes joined)[{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{[IP_ADDRESS]}{[IP_ADDRESS]:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20} elect leader, _BECOME_MASTER_TASK_, _FINISH_ELECTION_], term: 222, version: 8367, delta: master node changed {previous [], current [{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{[IP_ADDRESS]}{[IP_ADDRESS]:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:36,253Z", "level": "INFO", "component": "o.e.c.s.ClusterApplierService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "master node changed {previous [], current [{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{[IP_ADDRESS]}{[IP_ADDRESS]:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}, term: 222, version: 8367, reason: Publication{term=222, version=8367}" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:36,419Z", "level": "INFO", "component": "o.e.h.AbstractHttpServerTransport", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "publish_address {[IP_ADDRESS]:9200}, bound_addresses {[::]:9200}", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:36,420Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "started", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:37,479Z", "level": "INFO", "component": "o.e.l.LicenseService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "license [85e882e5-5714-4173-a5dd-9baa841494a0] mode [basic] - valid", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:37,500Z", "level": "INFO", "component": "o.e.g.GatewayService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "recovered [15] indices into cluster_state", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:45,368Z", "level": "INFO", "component": "o.e.c.r.a.AllocationService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "Cluster health status changed from [RED] to [YELLOW] (reason: [shards started [[activities_testing][0]]]).", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:21Z","tags":["info","plugins-service"],"pid":7,"message":"Plugin \"visTypeXy\" is disabled."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:21Z","tags":["info","plugins-service"],"pid":7,"message":"Plugin \"auditTrail\" is disabled."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:21Z","tags":["warning","config","deprecation"],"pid":7,"message":"Config key [monitoring.cluster_alerts.email_notifications.email_address] will be required for email notifications to work in 8.0.\""}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:21Z","tags":["info","plugins-system"],"pid":7,"message":"Setting up [96] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,code,mapsLegacy,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,newsfeed,kibanaLegacy,translations,share,legacyExport,embeddable,uiActionsEnhanced,expressions,data,home,observability,cloud,apmOss,console,consoleExtensions,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,dashboard,visualizations,visTypeTimelion,timelion,features,upgradeAssistant,security,snapshotRestore,encryptedSavedObjects,ingestManager,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,dashboardMode,beatsManagement,transform,ingestPipelines,maps,licenseManagement,graph,dataEnhanced,visTypeVega,visTypeTable,visTypeMarkdown,tileMap,regionMap,inputControlVis,visualize,esUiShared,charts,lens,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,discover,discoverEnhanced,savedObjectsManagement,spaces,reporting,lists,eventLog,actions,case,alerts,stackAlerts,triggersActionsUi,ml,securitySolution,infra,monitoring,logstash,apm,uptime,bfetch,canvas]"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","security","config"],"pid":7,"message":"Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.yml"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","security","config"],"pid":7,"message":"Session cookies will be transmitted over insecure connections. This is not recommended."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","encryptedSavedObjects","config"],"pid":7,"message":"Generating a random key for xpack.encryptedSavedObjects.encryptionKey. To be able to decrypt encrypted saved objects attributes after restart, please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","ingestManager"],"pid":7,"message":"Fleet APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","reporting","config"],"pid":7,"message":"Generating a random key for xpack.reporting.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.reporting.encryptionKey in kibana.yml"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","reporting","config"],"pid":7,"message":"Found 'server.host: \"0\"' in Kibana configuration. This is incompatible with Reporting. To enable Reporting to work, 'xpack.reporting.kibanaServer.hostname: [IP_ADDRESS]' is being automatically to the configuration. You can change the setting to 'server.host: [IP_ADDRESS]' or add 'xpack.reporting.kibanaServer.hostname: [IP_ADDRESS]' in kibana.yml to prevent this message."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","reporting","config"],"pid":7,"message":"Chromium sandbox provides an additional layer of protection, but is not supported for Linux CentOS 8.3.2011\n OS. Automatically setting 'xpack.reporting.capture.browser.chromium.disableSandbox: true'."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","actions","actions"],"pid":7,"message":"APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:23Z","tags":["warning","plugins","alerts","plugins","alerting"],"pid":7,"message":"APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:23Z","tags":["info","plugins","monitoring","monitoring"],"pid":7,"message":"config sourced from: production cluster"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:23Z","tags":["info","savedobjects-service"],"pid":7,"message":"Waiting until all Elasticsearch nodes are compatible with Kibana before starting saved objects migrations..."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:23Z","tags":["info","savedobjects-service"],"pid":7,"message":"Starting saved objects migrations"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins-system"],"pid":7,"message":"Starting [96] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,code,mapsLegacy,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,newsfeed,kibanaLegacy,translations,share,legacyExport,embeddable,uiActionsEnhanced,expressions,data,home,observability,cloud,apmOss,console,consoleExtensions,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,dashboard,visualizations,visTypeTimelion,timelion,features,upgradeAssistant,security,snapshotRestore,encryptedSavedObjects,ingestManager,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,dashboardMode,beatsManagement,transform,ingestPipelines,maps,licenseManagement,graph,dataEnhanced,visTypeVega,visTypeTable,visTypeMarkdown,tileMap,regionMap,inputControlVis,visualize,esUiShared,charts,lens,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,discover,discoverEnhanced,savedObjectsManagement,spaces,reporting,lists,eventLog,actions,case,alerts,stackAlerts,triggersActionsUi,ml,securitySolution,infra,monitoring,logstash,apm,uptime,bfetch,canvas]"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins","taskManager","taskManager"],"pid":7,"message":"TaskManager is identified by the Kibana UUID: bf01f365-e094-4cde-940d-3e0db65fa22a"}
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:29:24,796Z", "level": "INFO", "component": "o.e.c.m.MetadataIndexTemplateService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "adding template [.management-beats] for index patterns [.management-beats]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins","crossClusterReplication"],"pid":7,"message":"Your basic license does not support crossClusterReplication. Please upgrade your license."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins","watcher"],"pid":7,"message":"Your basic license does not support watcher. Please upgrade your license."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins","monitoring","monitoring","kibana-monitoring"],"pid":7,"message":"Starting monitoring stats collection"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:endpoint:user-artifact-packager:1.0.0]: version conflict, document already exists (current version [307637])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:Actions-actions_telemetry]: version conflict, document already exists (current version [733])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:apm-telemetry-task]: version conflict, document already exists (current version [1210])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:Alerting-alerting_telemetry]: version conflict, document already exists (current version [733])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:Lens-lens_telemetry]: version conflict, document already exists (current version [733])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:26Z","tags":["listening","info"],"pid":7,"message":"Server running at [URL_WITH_CREDENTIALS] server running at [URL_WITH_CREDENTIALS] the Chromium sandbox provides an additional layer of protection."}
docker_lamp_1 | Warning: Ambiguous class resolution, "Microsoft\Graph\Generated\Models\AudioConferencing" was found in both "/home/jiminny/app/Services/MeetingGenerator/Overrides/Microsoft/Graph/Generated/Models/AudioConferencing.php" and "/home/jiminny/vendor/microsoft/microsoft-graph/src/Generated/Models/AudioConferencing.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\AwsS3V3\AwsS3V3Adapter" was found in both "/home/jiminny/vendor/league/flysystem-aws-s3-v3/AwsS3V3Adapter.php" and "/home/jiminny/vendor/league/flysystem/src/AwsS3V3/AwsS3V3Adapter.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\AwsS3V3\PortableVisibilityConverter" was found in both "/home/jiminny/vendor/league/flysystem-aws-s3-v3/PortableVisibilityConverter.php" and "/home/jiminny/vendor/league/flysystem/src/AwsS3V3/PortableVisibilityConverter.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\AwsS3V3\VisibilityConverter" was found in both "/home/jiminny/vendor/league/flysystem-aws-s3-v3/VisibilityConverter.php" and "/home/jiminny/vendor/league/flysystem/src/AwsS3V3/VisibilityConverter.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\Local\LocalFilesystemAdapter" was found in both "/home/jiminny/vendor/league/flysystem-local/LocalFilesystemAdapter.php" and "/home/jiminny/vendor/league/flysystem/src/Local/LocalFilesystemAdapter.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\Local\FallbackMimeTypeDetector" was found in both "/home/jiminny/vendor/league/flysystem-local/FallbackMimeTypeDetector.php" and "/home/jiminny/vendor/league/flysystem/src/Local/FallbackMimeTypeDetector.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\Local\LocalFilesystemAdapterTest" was found in both "/home/jiminny/vendor/league/flysystem-local/LocalFilesystemAdapterTest.php" and "/home/jiminny/vendor/league/flysystem/src/Local/LocalFilesystemAdapterTest.php", the first will be used.
docker_lamp_1 | Class Tests\Unit\Http\Controllers\API\V2\OnDemandV2ControllerTest located in ./tests/Unit/Http/Controllers/Api/V2/OnDemandV2ControllerTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | Class Tests\Unit\Notifications\PostmarkChannelTest located in ./tests/Feature/Notifications/PostmarkChannelTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | Class Tests\Unit\Http\Controllers\API\V2\OnDemandV2ControllerTest located in ./tests/Unit/Http/Controllers/Api/V2/OnDemandV2ControllerTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | Class Tests\Unit\Notifications\PostmarkChannelTest located in ./tests/Feature/Notifications/PostmarkChannelTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | Class RingCentral\SDK\WebSocket\WebSocketSubscriptionTest located in ./vendor/ringcentral/ringcentral-php/src/WebSocket/SubscriptionTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | > Illuminate\Foundation\ComposerScripts::postAutoloadDump
docker_lamp_1 | > @php artisan package:discover --ansi
docker_lamp_1 |
docker_lamp_1 | INFO Discovering packages.
docker_lamp_1 |
docker_lamp_1 | 24slides/laravel-saml2 [PASSWORD_DOTS] DONE
docker_lamp_1 | aws/aws-sdk-php-laravel [PASSWORD_DOTS] DONE
docker_lamp_1 | barryvdh/laravel-debugbar [PASSWORD_DOTS] DONE
docker_lamp_1 | barryvdh/laravel-dompdf [PASSWORD_DOTS] DONE
docker_lamp_1 | barryvdh/laravel-ide-helper [PASSWORD_DOTS] DONE
docker_lamp_1 | bepsvpt/secure-headers [PASSWORD_DOTS] DONE
docker_lamp_1 | chaseconey/laravel-datadog-helper [PASSWORD_DOTS] DONE
docker_lamp_1 | devio/pipedrive [PASSWORD_DOTS] DONE
docker_lamp_1 | jasonmccreary/laravel-test-assertions [PASSWORD_DOTS] DONE
docker_lamp_1 | jdavidbakr/cloudfront-proxies [PASSWORD_DOTS] DONE
docker_lamp_1 | kalnoy/nestedset [PASSWORD_DOTS] DONE
docker_lamp_1 | laravel/passport [PASSWORD_DOTS] DONE
docker_lamp_1...
|
NULL
|
|
42666
|
911
|
33
|
2026-04-17T07:31:40.252327+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411100252_m2.jpg...
|
iTerm2
|
DOCKER (docker-compose)
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Thu Apr 16 15:43:43 on console
Poetry Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
%
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
Attaching to blackfire-1, datadog-1, jiminny_ext-1, mariadb-1, docker_lamp_1, elasticsearch, kibana, ngrok, redis
mariadb-1 | 2026-04-17 07:28:13+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.4.5+maria~ubu2404 started.
redis | 1:C 17 Apr 2026 07:28:13.623 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis | 1:C 17 Apr 2026 07:28:13.625 # Redis version=5.0.14, bits=64, commit=00000000, modified=0, pid=1, just started
redis | 1:C 17 Apr 2026 07:28:13.625 # Configuration loaded
redis | 1:M 17 Apr 2026 07:28:13.630 * Running mode=standalone, port=6379.
redis | 1:M 17 Apr 2026 07:28:13.630 # Server initialized
redis | 1:M 17 Apr 2026 07:28:13.630 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
redis | 1:M 17 Apr 2026 07:28:13.633 * Reading RDB preamble from AOF file...
redis | 1:M 17 Apr 2026 07:28:13.634 * Reading the remaining AOF tail...
blackfire-1 | [2026-04-17T07:28:13Z] ERROR: The server ID parameter is not set. Please run 'blackfire-agent -register' to configure it.
blackfire-1 | usage blackfire-agent [options]
blackfire-1 | --collector="[URL_WITH_CREDENTIALS] controller (64 bit): Version 7.10.2 (Build 40a3af639d4698) Copyright (c) 2020 Elasticsearch BV" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:31,936Z", "level": "INFO", "component": "o.e.t.NettyAllocator", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "creating NettyAllocator with the following configs: [name=unpooled, suggested_max_allocation_size=256kb, factors={es.unsafe.use_unpooled_allocator=null, g1gc_enabled=true, g1gc_region_size=1mb, heap_size=700mb}]" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:32,217Z", "level": "INFO", "component": "o.e.d.DiscoveryModule", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "using discovery type [single-node] and seed hosts providers [settings]" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:33,367Z", "level": "WARN", "component": "o.e.g.DanglingIndicesState", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "gateway.auto_import_dangling_indices is disabled, dangling indices will not be automatically detected or imported and must be managed manually" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:34,469Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "initialized" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:34,470Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "starting ..." }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:34,818Z", "level": "INFO", "component": "o.e.t.TransportService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "publish_address {[IP_ADDRESS]:9300}, bound_addresses {[::]:9300}" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:35,545Z", "level": "INFO", "component": "o.e.c.c.Coordinator", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "cluster UUID [8uh2w1CUSGyWYR_OvaKx6g]" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:35,815Z", "level": "INFO", "component": "o.e.c.s.MasterService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "elected-as-master ([1] nodes joined)[{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{[IP_ADDRESS]}{[IP_ADDRESS]:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20} elect leader, _BECOME_MASTER_TASK_, _FINISH_ELECTION_], term: 222, version: 8367, delta: master node changed {previous [], current [{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{[IP_ADDRESS]}{[IP_ADDRESS]:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:36,253Z", "level": "INFO", "component": "o.e.c.s.ClusterApplierService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "master node changed {previous [], current [{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{[IP_ADDRESS]}{[IP_ADDRESS]:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}, term: 222, version: 8367, reason: Publication{term=222, version=8367}" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:36,419Z", "level": "INFO", "component": "o.e.h.AbstractHttpServerTransport", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "publish_address {[IP_ADDRESS]:9200}, bound_addresses {[::]:9200}", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:36,420Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "started", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:37,479Z", "level": "INFO", "component": "o.e.l.LicenseService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "license [85e882e5-5714-4173-a5dd-9baa841494a0] mode [basic] - valid", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:37,500Z", "level": "INFO", "component": "o.e.g.GatewayService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "recovered [15] indices into cluster_state", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:45,368Z", "level": "INFO", "component": "o.e.c.r.a.AllocationService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "Cluster health status changed from [RED] to [YELLOW] (reason: [shards started [[activities_testing][0]]]).", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:21Z","tags":["info","plugins-service"],"pid":7,"message":"Plugin \"visTypeXy\" is disabled."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:21Z","tags":["info","plugins-service"],"pid":7,"message":"Plugin \"auditTrail\" is disabled."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:21Z","tags":["warning","config","deprecation"],"pid":7,"message":"Config key [monitoring.cluster_alerts.email_notifications.email_address] will be required for email notifications to work in 8.0.\""}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:21Z","tags":["info","plugins-system"],"pid":7,"message":"Setting up [96] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,code,mapsLegacy,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,newsfeed,kibanaLegacy,translations,share,legacyExport,embeddable,uiActionsEnhanced,expressions,data,home,observability,cloud,apmOss,console,consoleExtensions,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,dashboard,visualizations,visTypeTimelion,timelion,features,upgradeAssistant,security,snapshotRestore,encryptedSavedObjects,ingestManager,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,dashboardMode,beatsManagement,transform,ingestPipelines,maps,licenseManagement,graph,dataEnhanced,visTypeVega,visTypeTable,visTypeMarkdown,tileMap,regionMap,inputControlVis,visualize,esUiShared,charts,lens,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,discover,discoverEnhanced,savedObjectsManagement,spaces,reporting,lists,eventLog,actions,case,alerts,stackAlerts,triggersActionsUi,ml,securitySolution,infra,monitoring,logstash,apm,uptime,bfetch,canvas]"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","security","config"],"pid":7,"message":"Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.yml"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","security","config"],"pid":7,"message":"Session cookies will be transmitted over insecure connections. This is not recommended."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","encryptedSavedObjects","config"],"pid":7,"message":"Generating a random key for xpack.encryptedSavedObjects.encryptionKey. To be able to decrypt encrypted saved objects attributes after restart, please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","ingestManager"],"pid":7,"message":"Fleet APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","reporting","config"],"pid":7,"message":"Generating a random key for xpack.reporting.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.reporting.encryptionKey in kibana.yml"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","reporting","config"],"pid":7,"message":"Found 'server.host: \"0\"' in Kibana configuration. This is incompatible with Reporting. To enable Reporting to work, 'xpack.reporting.kibanaServer.hostname: [IP_ADDRESS]' is being automatically to the configuration. You can change the setting to 'server.host: [IP_ADDRESS]' or add 'xpack.reporting.kibanaServer.hostname: [IP_ADDRESS]' in kibana.yml to prevent this message."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","reporting","config"],"pid":7,"message":"Chromium sandbox provides an additional layer of protection, but is not supported for Linux CentOS 8.3.2011\n OS. Automatically setting 'xpack.reporting.capture.browser.chromium.disableSandbox: true'."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","actions","actions"],"pid":7,"message":"APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:23Z","tags":["warning","plugins","alerts","plugins","alerting"],"pid":7,"message":"APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:23Z","tags":["info","plugins","monitoring","monitoring"],"pid":7,"message":"config sourced from: production cluster"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:23Z","tags":["info","savedobjects-service"],"pid":7,"message":"Waiting until all Elasticsearch nodes are compatible with Kibana before starting saved objects migrations..."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:23Z","tags":["info","savedobjects-service"],"pid":7,"message":"Starting saved objects migrations"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins-system"],"pid":7,"message":"Starting [96] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,code,mapsLegacy,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,newsfeed,kibanaLegacy,translations,share,legacyExport,embeddable,uiActionsEnhanced,expressions,data,home,observability,cloud,apmOss,console,consoleExtensions,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,dashboard,visualizations,visTypeTimelion,timelion,features,upgradeAssistant,security,snapshotRestore,encryptedSavedObjects,ingestManager,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,dashboardMode,beatsManagement,transform,ingestPipelines,maps,licenseManagement,graph,dataEnhanced,visTypeVega,visTypeTable,visTypeMarkdown,tileMap,regionMap,inputControlVis,visualize,esUiShared,charts,lens,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,discover,discoverEnhanced,savedObjectsManagement,spaces,reporting,lists,eventLog,actions,case,alerts,stackAlerts,triggersActionsUi,ml,securitySolution,infra,monitoring,logstash,apm,uptime,bfetch,canvas]"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins","taskManager","taskManager"],"pid":7,"message":"TaskManager is identified by the Kibana UUID: bf01f365-e094-4cde-940d-3e0db65fa22a"}
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:29:24,796Z", "level": "INFO", "component": "o.e.c.m.MetadataIndexTemplateService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "adding template [.management-beats] for index patterns [.management-beats]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins","crossClusterReplication"],"pid":7,"message":"Your basic license does not support crossClusterReplication. Please upgrade your license."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins","watcher"],"pid":7,"message":"Your basic license does not support watcher. Please upgrade your license."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins","monitoring","monitoring","kibana-monitoring"],"pid":7,"message":"Starting monitoring stats collection"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:endpoint:user-artifact-packager:1.0.0]: version conflict, document already exists (current version [307637])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:Actions-actions_telemetry]: version conflict, document already exists (current version [733])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:apm-telemetry-task]: version conflict, document already exists (current version [1210])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:Alerting-alerting_telemetry]: version conflict, document already exists (current version [733])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:Lens-lens_telemetry]: version conflict, document already exists (current version [733])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:26Z","tags":["listening","info"],"pid":7,"message":"Server running at [URL_WITH_CREDENTIALS] server running at [URL_WITH_CREDENTIALS] the Chromium sandbox provides an additional layer of protection."}
docker_lamp_1 | Warning: Ambiguous class resolution, "Microsoft\Graph\Generated\Models\AudioConferencing" was found in both "/home/jiminny/app/Services/MeetingGenerator/Overrides/Microsoft/Graph/Generated/Models/AudioConferencing.php" and "/home/jiminny/vendor/microsoft/microsoft-graph/src/Generated/Models/AudioConferencing.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\AwsS3V3\AwsS3V3Adapter" was found in both "/home/jiminny/vendor/league/flysystem-aws-s3-v3/AwsS3V3Adapter.php" and "/home/jiminny/vendor/league/flysystem/src/AwsS3V3/AwsS3V3Adapter.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\AwsS3V3\PortableVisibilityConverter" was found in both "/home/jiminny/vendor/league/flysystem-aws-s3-v3/PortableVisibilityConverter.php" and "/home/jiminny/vendor/league/flysystem/src/AwsS3V3/PortableVisibilityConverter.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\AwsS3V3\VisibilityConverter" was found in both "/home/jiminny/vendor/league/flysystem-aws-s3-v3/VisibilityConverter.php" and "/home/jiminny/vendor/league/flysystem/src/AwsS3V3/VisibilityConverter.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\Local\LocalFilesystemAdapter" was found in both "/home/jiminny/vendor/league/flysystem-local/LocalFilesystemAdapter.php" and "/home/jiminny/vendor/league/flysystem/src/Local/LocalFilesystemAdapter.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\Local\FallbackMimeTypeDetector" was found in both "/home/jiminny/vendor/league/flysystem-local/FallbackMimeTypeDetector.php" and "/home/jiminny/vendor/league/flysystem/src/Local/FallbackMimeTypeDetector.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\Local\LocalFilesystemAdapterTest" was found in both "/home/jiminny/vendor/league/flysystem-local/LocalFilesystemAdapterTest.php" and "/home/jiminny/vendor/league/flysystem/src/Local/LocalFilesystemAdapterTest.php", the first will be used.
docker_lamp_1 | Class Tests\Unit\Http\Controllers\API\V2\OnDemandV2ControllerTest located in ./tests/Unit/Http/Controllers/Api/V2/OnDemandV2ControllerTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | Class Tests\Unit\Notifications\PostmarkChannelTest located in ./tests/Feature/Notifications/PostmarkChannelTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | Class Tests\Unit\Http\Controllers\API\V2\OnDemandV2ControllerTest located in ./tests/Unit/Http/Controllers/Api/V2/OnDemandV2ControllerTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | Class Tests\Unit\Notifications\PostmarkChannelTest located in ./tests/Feature/Notifications/PostmarkChannelTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | Class RingCentral\SDK\WebSocket\WebSocketSubscriptionTest located in ./vendor/ringcentral/ringcentral-php/src/WebSocket/SubscriptionTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | > Illuminate\Foundation\ComposerScripts::postAutoloadDump
docker_lamp_1 | > @php artisan package:discover --ansi
docker_lamp_1 |
docker_lamp_1 | INFO Discovering packages.
docker_lamp_1 |
docker_lamp_1 | 24slides/laravel-saml2 [PASSWORD_DOTS] DONE
docker_lamp_1 | aws/aws-sdk-php-laravel [PASSWORD_DOTS] DONE
docker_lamp_1 | barryvdh/laravel-debugbar [PASSWORD_DOTS] DONE
docker_lamp_1 | barryvdh/laravel-dompdf [PASSWORD_DOTS] DONE
docker_lamp_1 | barryvdh/laravel-ide-helper [PASSWORD_DOTS] DONE
docker_lamp_1 | bepsvpt/secure-headers [PASSWORD_DOTS] DONE
docker_lamp_1 | chaseconey/laravel-datadog-helper [PASSWORD_DOTS] DONE
docker_lamp_1 | devio/pipedrive [PASSWORD_DOTS] DONE
docker_lamp_1 | jasonmccreary/laravel-test-assertions [PASSWORD_DOTS] DONE
docker_lamp_1 | jdavidbakr/cloudfront-proxies [PASSWORD_DOTS] DONE
docker_lamp_1 | kalnoy/nestedset [PASSWORD_DOTS] DONE
docker_lamp_1 | laravel/passport [PASSWORD_DOTS] DONE
docker_lamp_1...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n% \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nAttaching to blackfire-1, datadog-1, jiminny_ext-1, mariadb-1, docker_lamp_1, elasticsearch, kibana, ngrok, redis\nmariadb-1 | 2026-04-17 07:28:13+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.4.5+maria~ubu2404 started.\nredis | 1:C 17 Apr 2026 07:28:13.623 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo\nredis | 1:C 17 Apr 2026 07:28:13.625 # Redis version=5.0.14, bits=64, commit=00000000, modified=0, pid=1, just started\nredis | 1:C 17 Apr 2026 07:28:13.625 # Configuration loaded\nredis | 1:M 17 Apr 2026 07:28:13.630 * Running mode=standalone, port=6379.\nredis | 1:M 17 Apr 2026 07:28:13.630 # Server initialized\nredis | 1:M 17 Apr 2026 07:28:13.630 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.\nredis | 1:M 17 Apr 2026 07:28:13.633 * Reading RDB preamble from AOF file...\nredis | 1:M 17 Apr 2026 07:28:13.634 * Reading the remaining AOF tail...\nblackfire-1 | [2026-04-17T07:28:13Z] ERROR: The server ID parameter is not set. Please run 'blackfire-agent -register' to configure it.\nblackfire-1 | usage blackfire-agent [options]\nblackfire-1 | --collector=\"https://blackfire.io\": Sets the URL of Blackfire's data collector\nblackfire-1 | --config=\"/etc/blackfire/agent\": Sets the path to the configuration file\nblackfire-1 | -d: Prints the current configuration\nblackfire-1 | --http-proxy=\"\": Sets the HTTP proxy to use\nblackfire-1 | --https-proxy=\"\": Sets the HTTPS proxy to use\nblackfire-1 | --log-file=\"stderr\": Sets the path of the log file. Use stderr to log to stderr\nblackfire-1 | --log-level=\"1\": log verbosity level (4: debug, 3: info, 2: warning, 1: error)\nblackfire-1 | --register: Helps you with registering the agent\nblackfire-1 | --server-id=\"\": Sets the server id used to authenticate with Blackfire API\nblackfire-1 | --server-token=\"\": Sets the server token used to authenticate with Blackfire API. It is unsafe to set this from the command line\nblackfire-1 | --socket=\"unix:///var/run/blackfire/agent.sock\": Sets the socket the agent should read traces from. Possible value can be a unix socket or a TCP address. ie: unix:///var/run/blackfire/agent.sock or tcp://127.0.0.1:8307\nblackfire-1 | --test: Tests the configuration\nblackfire-1 | --timeout=\"15s\": Sets the Blackfire connection timeout\nblackfire-1 | -v: Prints the version number\nngrok | t=2026-04-17T07:28:13+0000 lvl=info msg=\"no configuration paths supplied\"\nngrok | t=2026-04-17T07:28:13+0000 lvl=info msg=\"using configuration at default config path\" path=/home/ngrok/.ngrok2/ngrok.yml\nngrok | t=2026-04-17T07:28:13+0000 lvl=info msg=\"open config file\" path=/home/ngrok/.ngrok2/ngrok.yml err=nil\nblackfire-1 exited with code 1\nngrok | t=2026-04-17T07:28:13+0000 lvl=info msg=\"starting web service\" obj=web addr=0.0.0.0:4040\njiminny_ext-1 exited with code 0\ndocker_lamp_1 | + main\ndocker_lamp_1 | + declare START_DIR\ndocker_lamp_1 | +++ realpath /scripts/init-dev\ndocker_lamp_1 | ++ dirname /scripts/init-dev\ndocker_lamp_1 | + START_DIR=/scripts\ndocker_lamp_1 | + readonly START_DIR\ndocker_lamp_1 | + source /scripts/storage_init.sh\ndocker_lamp_1 | ++ set -o errexit\ndocker_lamp_1 | ++ set -o nounset\ndocker_lamp_1 | ++ set -o pipefail\ndocker_lamp_1 | + create_bind_mount\ndocker_lamp_1 | + [[ 0 == \\1 ]]\ndocker_lamp_1 | + configure_xdebug\ndocker_lamp_1 | + j2 /root/.j2_templates/xdebug/xdebug.ini.j2\nmariadb-1 | 2026-04-17 07:28:14+00:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB\nmariadb-1 | 2026-04-17 07:28:14+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'\nngrok | t=2026-04-17T07:28:14+0000 lvl=info msg=\"tunnel session started\" obj=tunnels.session\nngrok | t=2026-04-17T07:28:14+0000 lvl=info msg=\"client session established\" obj=csess id=34de209b437c\nmariadb-1 | 2026-04-17 07:28:14+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.4.5+maria~ubu2404 started.\nngrok | t=2026-04-17T07:28:14+0000 lvl=info msg=\"started tunnel\" obj=tunnels name=\"command_line (http)\" addr=http://lamp:3080 url=http://lukask.ngrok.io\nngrok | t=2026-04-17T07:28:14+0000 lvl=info msg=\"started tunnel\" obj=tunnels name=command_line addr=http://lamp:3080 url=https://lukask.ngrok.io\ndatadog-1 | [s6-init] making user provided files available at /var/run/s6/etc...exited 0.\nmariadb-1 | 2026-04-17 07:28:15+00:00 [Note] [Entrypoint]: MariaDB upgrade information missing, assuming required\nmariadb-1 | 2026-04-17 07:28:15+00:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] Starting MariaDB 11.4.5-MariaDB-ubu2404 source revision 0771110266ff5c04216af4bf1243c65f8c67ccf4 server_uid LEIUY8nWIgtXzFZ8Uo7xi+G0Q88= as process 1\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Compressed tables use zlib 1.3\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Number of transaction pools: 1\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Using ARMv8 crc32 + pmull instructions\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Using liburing\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Completed initialization of buffer pool\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: End of log at LSN=7522656703\nngrok | t=2026-04-17T07:28:15+0000 lvl=info msg=\"update available\" obj=updater\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Opened 3 undo tablespaces\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: log sequence number 7522656703; transaction id 11384091\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] Plugin 'FEEDBACK' is disabled.\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] Plugin 'wsrep-provider' is disabled.\ndocker_lamp_1 | + configure_blackfire\ndocker_lamp_1 | + j2 /root/.j2_templates/blackfire/extension.ini.j2\ndocker_lamp_1 | + j2 /root/.j2_templates/blackfire/cli.ini.j2\ndocker_lamp_1 | + declare EMPTY_DB\ndocker_lamp_1 | + db_is_empty\ndocker_lamp_1 | ++ find /var/lib/mysql/ -maxdepth 1\ndocker_lamp_1 | ++ wc -l\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Buffer pool(s) load completed at 260417 7:28:15\ndocker_lamp_1 | + [[ 11 -lt 5 ]]\ndocker_lamp_1 | + EMPTY_DB=0\ndocker_lamp_1 | + readonly EMPTY_DB\ndocker_lamp_1 | + [[ 0 -eq 1 ]]\ndocker_lamp_1 | + [[ local == \\l\\o\\c\\a\\l ]]\ndocker_lamp_1 | + set_nginx_domain dev.jiminny.com\ndocker_lamp_1 | + declare -r DOMAIN_NAME=dev.jiminny.com\ndocker_lamp_1 | + cp -f /etc/nginx/nginx_template.conf /etc/nginx/nginx.conf\ndocker_lamp_1 | + sed -i -E s~_JIMINNY_DOMAIN~app.dev.jiminny.com~g /etc/nginx/nginx.conf\ndocker_lamp_1 | + sed -i -E s~_JIMINNY_EXT_DOMAIN~ext.dev.jiminny.com~g /etc/nginx/nginx.conf\ndocker_lamp_1 | + sed -i -E s~_JIMINNY_WEB_DOMAIN~www.dev.jiminny.com~g /etc/nginx/nginx.conf\ndocker_lamp_1 | + [[ -n 3399 ]]\ndocker_lamp_1 | + sed -i -E 's~http:\\/\\/jiminny_ext:8080~http://jiminny_ext:3399~g' /etc/nginx/nginx.conf\ndocker_lamp_1 | + [[ -n host.docker.internal ]]\ndocker_lamp_1 | + sed -i -E 's~http:\\/\\/jiminny_ext~http://host.docker.internal~g' /etc/nginx/nginx.conf\ndocker_lamp_1 | + build_dev\ndocker_lamp_1 | + cd /home/jiminny/\ndocker_lamp_1 | + create_dot_env_local_file\ndocker_lamp_1 | + cp -f /home/jiminny/.env.local /home/jiminny/.env.local.bak\ndocker_lamp_1 | + create_dot_env\ndocker_lamp_1 | + [[ -f /home/jiminny/.env ]]\ndocker_lamp_1 | + return\ndocker_lamp_1 | + declare DB_ADMIN_PASSWORD\ndocker_lamp_1 | + declare DB_ADMIN_USERNAME\ndocker_lamp_1 | + declare DB_DEV_PASSWORD\ndocker_lamp_1 | + declare DB_DEV_USERNAME\ndocker_lamp_1 | + declare DB_ROOT_PASSWORD\ndocker_lamp_1 | + declare DB_ROOT_USERNAME\ndocker_lamp_1 | + declare DB_WEB_PASSWORD\ndocker_lamp_1 | + declare DB_WEB_USERNAME\ndocker_lamp_1 | ++ jq -r .DB_ADMIN_PASSWORD /home/jiminny/dev.json\ndocker_lamp_1 | + DB_ADMIN_PASSWORD='dgyt$rTe21-d'\ndocker_lamp_1 | ++ jq -r .DB_ADMIN_USERNAME /home/jiminny/dev.json\ndocker_lamp_1 | + DB_ADMIN_USERNAME=jmnyadmin\ndocker_lamp_1 | ++ jq -r .DB_DEV_PASSWORD /home/jiminny/dev.json\ndocker_lamp_1 | + DB_DEV_PASSWORD=rTr4sdQA65-Ad\ndocker_lamp_1 | ++ jq -r .DB_DEV_USERNAME /home/jiminny/dev.json\ndatadog-1 | [s6-init] ensuring user provided files have correct perms...exited 0.\ndocker_lamp_1 | + DB_DEV_USERNAME=jmnydev\ndocker_lamp_1 | ++ jq -r .DB_ROOT_PASSWORD /home/jiminny/dev.json\ndatadog-1 | [fix-attrs.d] applying ownership & permissions fixes...\ndocker_lamp_1 | + DB_ROOT_PASSWORD=b7h5-1fH3e54J\ndocker_lamp_1 | ++ jq -r .DB_ROOT_USERNAME /home/jiminny/dev.json\ndatadog-1 | [fix-attrs.d] done.\ndocker_lamp_1 | + DB_ROOT_USERNAME=root\ndocker_lamp_1 | ++ jq -r .DB_WEB_PASSWORD /home/jiminny/dev.json\ndatadog-1 | [cont-init.d] executing container initialization scripts...\ndocker_lamp_1 | + DB_WEB_PASSWORD=aR5-EWf23b8da\ndocker_lamp_1 | ++ jq -r .DB_WEB_USERNAME /home/jiminny/dev.json\ndatadog-1 | [cont-init.d] 01-check-apikey.sh: executing... \ndocker_lamp_1 | + DB_WEB_USERNAME=jmnyweb\ndocker_lamp_1 | + readonly DB_ADMIN_PASSWORD\ndocker_lamp_1 | + readonly DB_ADMIN_USERNAME\ndocker_lamp_1 | + readonly DB_DEV_PASSWORD\ndocker_lamp_1 | + readonly DB_DEV_USERNAME\ndocker_lamp_1 | + readonly DB_ROOT_PASSWORD\ndocker_lamp_1 | + readonly DB_ROOT_USERNAME\ndocker_lamp_1 | + readonly DB_WEB_PASSWORD\ndocker_lamp_1 | + readonly DB_WEB_USERNAME\ndocker_lamp_1 | + sed -i -E 's~DB_USERNAME=.*$~DB_USERNAME=jmnyadmin~g' /home/jiminny/.env\ndocker_lamp_1 | + sed -i -E 's~DB_PASSWORD=.*$~DB_PASSWORD=dgyt$rTe21-d~g' /home/jiminny/.env\nmariadb-1 | 2026-04-17 7:28:16 0 [Note] Server socket created on IP: '0.0.0.0'.\nmariadb-1 | 2026-04-17 7:28:16 0 [Note] Server socket created on IP: '::'.\ndocker_lamp_1 | + sed -i -E 's~DB_HOST=.*$~DB_HOST=mariadb~g' /home/jiminny/.env\ndocker_lamp_1 | + cp -f /home/jiminny/.env /home/jiminny/.env.root\ndocker_lamp_1 | + cp -f /home/jiminny/.env /home/jiminny/.env.migrate\ndocker_lamp_1 | + sed -i -E 's~DB_PASSWORD=.*$~DB_PASSWORD=b7h5-1fH3e54J~g' /home/jiminny/.env.migrate\ndocker_lamp_1 | + sed -i -E 's~DB_PASSWORD=.*$~DB_PASSWORD=b7h5-1fH3e54J~g' /home/jiminny/.env.root\ndocker_lamp_1 | + sed -i -E 's~DB_USERNAME=.*$~DB_USERNAME=root~g' /home/jiminny/.env.migrate\ndocker_lamp_1 | + sed -i -E 's~DB_USERNAME=.*$~DB_USERNAME=root~g' /home/jiminny/.env.root\nmariadb-1 | 2026-04-17 7:28:16 0 [Note] mariadbd: Event Scheduler: Loaded 0 events\ndatadog-1 | \ndatadog-1 | ==================================================================================\ndatadog-1 | You must set an DD_API_KEY environment variable to run the Datadog Agent container\ndatadog-1 | ==================================================================================\ndatadog-1 | \ndocker_lamp_1 | + cp -f /home/jiminny/.env /home/jiminny/.env.local\nmariadb-1 | 2026-04-17 7:28:16 0 [Note] mariadbd: ready for connections.\nmariadb-1 | Version: '11.4.5-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution\ndocker_lamp_1 | + echo ''\ndocker_lamp_1 | + echo 'DB_ADMIN_PASSWORD=dgyt$rTe21-d'\ndocker_lamp_1 | + echo DB_ADMIN_USERNAME=jmnyadmin\ndocker_lamp_1 | + echo DB_DEV_PASSWORD=rTr4sdQA65-Ad\ndocker_lamp_1 | + echo DB_DEV_USERNAME=jmnydev\ndocker_lamp_1 | + echo DB_ROOT_PASSWORD=b7h5-1fH3e54J\ndocker_lamp_1 | + echo DB_ROOT_USERNAME=root\ndocker_lamp_1 | + echo DB_WEB_PASSWORD=aR5-EWf23b8da\ndocker_lamp_1 | + echo DB_WEB_USERNAME=jmnyweb\ndocker_lamp_1 | + [[ false == \\f\\a\\l\\s\\e ]]\ndocker_lamp_1 | + declare COMPOSER_PARAM=--prefer-dist\ndocker_lamp_1 | + [[ 0 -eq 1 ]]\ndocker_lamp_1 | + composer install --prefer-dist\ndatadog-1 | [cont-init.d] 01-check-apikey.sh: exited 1.\ndatadog-1 exited with code 1\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:18,579Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"version[7.10.2], pid[6], build[default/docker/747e1cc71def077253878a59143c1f785afa92b9/2021-01-13T04:42:47.157277Z], OS[Linux/6.12.54-linuxkit/aarch64], JVM[AdoptOpenJDK/OpenJDK 64-Bit Server VM/15.0.1/15.0.1+9]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:18,581Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"JVM home [/usr/share/elasticsearch/jdk], using bundled JDK [true]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:18,581Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"JVM arguments [-Xshare:auto, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -XX:+ShowCodeDetailsInExceptionMessages, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dio.netty.allocator.numDirectArenas=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.locale.providers=SPI,COMPAT, -Xms1g, -Xmx1g, -XX:+UseG1GC, -XX:G1ReservePercent=25, -XX:InitiatingHeapOccupancyPercent=30, -Djava.io.tmpdir=/tmp/elasticsearch-2077775440550164101, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m, -Des.cgroups.hierarchy.override=/, -Xms700m, -Xmx700m, -XX:MaxDirectMemorySize=367001600, -Des.path.home=/usr/share/elasticsearch, -Des.path.conf=/usr/share/elasticsearch/config, -Des.distribution.flavor=default, -Des.distribution.type=docker, -Des.bundled_jdk=true]\" }\ndocker_lamp_1 | Installing dependencies from lock file (including require-dev)\ndocker_lamp_1 | Verifying lock file contents can be installed on current platform.\ndocker_lamp_1 | Nothing to install, update or remove\ndocker_lamp_1 | Package doctrine/annotations is abandoned, you should avoid using it. No replacement was suggested.\ndocker_lamp_1 | Package symfony/debug is abandoned, you should avoid using it. Use symfony/error-handler instead.\ndocker_lamp_1 | Generating optimized autoload files\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,937Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [aggs-matrix-stats]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,938Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [analysis-common]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,938Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [constant-keyword]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,938Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [flattened]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,938Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [frozen-indices]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [ingest-common]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [ingest-geoip]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [ingest-user-agent]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [kibana]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [lang-expression]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,940Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [lang-mustache]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,940Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [lang-painless]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,941Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [mapper-extras]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,941Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [mapper-version]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,941Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [parent-join]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,941Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [percolator]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [rank-eval]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [reindex]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [repositories-metering-api]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [repository-url]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [search-business-rules]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [searchable-snapshots]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [spatial]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [transform]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [transport-netty4]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [unsigned-long]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [vectors]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [wildcard]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-analytics]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-async]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-async-search]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-autoscaling]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-ccr]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-core]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-data-streams]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-deprecation]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-enrich]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-eql]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-graph]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-identity-provider]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-ilm]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-logstash]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-ml]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-monitoring]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-ql]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-rollup]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-security]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-sql]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-stack]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-voting-only-node]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-watcher]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,946Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"no plugins loaded\" }\nelasticsearch | {\"type\": \"deprecation\", \"timestamp\": \"2026-04-17T07:28:22,065Z\", \"level\": \"DEPRECATION\", \"component\": \"o.e.d.c.s.Settings\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[node.data] setting was deprecated in Elasticsearch and will be removed in a future release! See the breaking changes documentation for the next major version.\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:22,090Z\", \"level\": \"INFO\", \"component\": \"o.e.e.NodeEnvironment\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"using [1] data paths, mounts [[/usr/share/elasticsearch/data (/dev/vda1)]], net usable_space [14.8gb], net total_space [58.3gb], types [ext4]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:22,091Z\", \"level\": \"INFO\", \"component\": \"o.e.e.NodeEnvironment\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"heap size [700mb], compressed ordinary object pointers [true]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:22,256Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"node name [e802ad473a4f], node ID [e2ZKzgw4Q4aCf2w5ljWr1A], cluster name [docker-cluster], roles [transform, master, remote_cluster_client, data, ml, data_content, data_hot, data_warm, data_cold, ingest]\" }\nredis | 1:M 17 Apr 2026 07:28:28.232 * DB loaded from append only file: 14.601 seconds\nredis | 1:M 17 Apr 2026 07:28:28.232 * Ready to accept connections\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:29,740Z\", \"level\": \"INFO\", \"component\": \"o.e.x.m.p.l.CppLogMessageHandler\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[controller/213] [Main.cc@114] controller (64 bit): Version 7.10.2 (Build 40a3af639d4698) Copyright (c) 2020 Elasticsearch BV\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:31,936Z\", \"level\": \"INFO\", \"component\": \"o.e.t.NettyAllocator\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"creating NettyAllocator with the following configs: [name=unpooled, suggested_max_allocation_size=256kb, factors={es.unsafe.use_unpooled_allocator=null, g1gc_enabled=true, g1gc_region_size=1mb, heap_size=700mb}]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:32,217Z\", \"level\": \"INFO\", \"component\": \"o.e.d.DiscoveryModule\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"using discovery type [single-node] and seed hosts providers [settings]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:33,367Z\", \"level\": \"WARN\", \"component\": \"o.e.g.DanglingIndicesState\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"gateway.auto_import_dangling_indices is disabled, dangling indices will not be automatically detected or imported and must be managed manually\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:34,469Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"initialized\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:34,470Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"starting ...\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:34,818Z\", \"level\": \"INFO\", \"component\": \"o.e.t.TransportService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"publish_address {172.18.0.7:9300}, bound_addresses {[::]:9300}\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:35,545Z\", \"level\": \"INFO\", \"component\": \"o.e.c.c.Coordinator\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"cluster UUID [8uh2w1CUSGyWYR_OvaKx6g]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:35,815Z\", \"level\": \"INFO\", \"component\": \"o.e.c.s.MasterService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"elected-as-master ([1] nodes joined)[{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{172.18.0.7}{172.18.0.7:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20} elect leader, _BECOME_MASTER_TASK_, _FINISH_ELECTION_], term: 222, version: 8367, delta: master node changed {previous [], current [{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{172.18.0.7}{172.18.0.7:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:36,253Z\", \"level\": \"INFO\", \"component\": \"o.e.c.s.ClusterApplierService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"master node changed {previous [], current [{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{172.18.0.7}{172.18.0.7:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}, term: 222, version: 8367, reason: Publication{term=222, version=8367}\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:36,419Z\", \"level\": \"INFO\", \"component\": \"o.e.h.AbstractHttpServerTransport\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"publish_address {172.18.0.7:9200}, bound_addresses {[::]:9200}\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:36,420Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"started\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:37,479Z\", \"level\": \"INFO\", \"component\": \"o.e.l.LicenseService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"license [85e882e5-5714-4173-a5dd-9baa841494a0] mode [basic] - valid\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:37,500Z\", \"level\": \"INFO\", \"component\": \"o.e.g.GatewayService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"recovered [15] indices into cluster_state\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:45,368Z\", \"level\": \"INFO\", \"component\": \"o.e.c.r.a.AllocationService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"Cluster health status changed from [RED] to [YELLOW] (reason: [shards started [[activities_testing][0]]]).\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:21Z\",\"tags\":[\"info\",\"plugins-service\"],\"pid\":7,\"message\":\"Plugin \\\"visTypeXy\\\" is disabled.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:21Z\",\"tags\":[\"info\",\"plugins-service\"],\"pid\":7,\"message\":\"Plugin \\\"auditTrail\\\" is disabled.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:21Z\",\"tags\":[\"warning\",\"config\",\"deprecation\"],\"pid\":7,\"message\":\"Config key [monitoring.cluster_alerts.email_notifications.email_address] will be required for email notifications to work in 8.0.\\\"\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:21Z\",\"tags\":[\"info\",\"plugins-system\"],\"pid\":7,\"message\":\"Setting up [96] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,code,mapsLegacy,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,newsfeed,kibanaLegacy,translations,share,legacyExport,embeddable,uiActionsEnhanced,expressions,data,home,observability,cloud,apmOss,console,consoleExtensions,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,dashboard,visualizations,visTypeTimelion,timelion,features,upgradeAssistant,security,snapshotRestore,encryptedSavedObjects,ingestManager,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,dashboardMode,beatsManagement,transform,ingestPipelines,maps,licenseManagement,graph,dataEnhanced,visTypeVega,visTypeTable,visTypeMarkdown,tileMap,regionMap,inputControlVis,visualize,esUiShared,charts,lens,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,discover,discoverEnhanced,savedObjectsManagement,spaces,reporting,lists,eventLog,actions,case,alerts,stackAlerts,triggersActionsUi,ml,securitySolution,infra,monitoring,logstash,apm,uptime,bfetch,canvas]\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"security\",\"config\"],\"pid\":7,\"message\":\"Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.yml\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"security\",\"config\"],\"pid\":7,\"message\":\"Session cookies will be transmitted over insecure connections. This is not recommended.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"encryptedSavedObjects\",\"config\"],\"pid\":7,\"message\":\"Generating a random key for xpack.encryptedSavedObjects.encryptionKey. To be able to decrypt encrypted saved objects attributes after restart, please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"ingestManager\"],\"pid\":7,\"message\":\"Fleet APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"reporting\",\"config\"],\"pid\":7,\"message\":\"Generating a random key for xpack.reporting.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.reporting.encryptionKey in kibana.yml\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"reporting\",\"config\"],\"pid\":7,\"message\":\"Found 'server.host: \\\"0\\\"' in Kibana configuration. This is incompatible with Reporting. To enable Reporting to work, 'xpack.reporting.kibanaServer.hostname: 0.0.0.0' is being automatically to the configuration. You can change the setting to 'server.host: 0.0.0.0' or add 'xpack.reporting.kibanaServer.hostname: 0.0.0.0' in kibana.yml to prevent this message.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"reporting\",\"config\"],\"pid\":7,\"message\":\"Chromium sandbox provides an additional layer of protection, but is not supported for Linux CentOS 8.3.2011\\n OS. Automatically setting 'xpack.reporting.capture.browser.chromium.disableSandbox: true'.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"actions\",\"actions\"],\"pid\":7,\"message\":\"APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:23Z\",\"tags\":[\"warning\",\"plugins\",\"alerts\",\"plugins\",\"alerting\"],\"pid\":7,\"message\":\"APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:23Z\",\"tags\":[\"info\",\"plugins\",\"monitoring\",\"monitoring\"],\"pid\":7,\"message\":\"config sourced from: production cluster\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:23Z\",\"tags\":[\"info\",\"savedobjects-service\"],\"pid\":7,\"message\":\"Waiting until all Elasticsearch nodes are compatible with Kibana before starting saved objects migrations...\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:23Z\",\"tags\":[\"info\",\"savedobjects-service\"],\"pid\":7,\"message\":\"Starting saved objects migrations\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins-system\"],\"pid\":7,\"message\":\"Starting [96] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,code,mapsLegacy,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,newsfeed,kibanaLegacy,translations,share,legacyExport,embeddable,uiActionsEnhanced,expressions,data,home,observability,cloud,apmOss,console,consoleExtensions,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,dashboard,visualizations,visTypeTimelion,timelion,features,upgradeAssistant,security,snapshotRestore,encryptedSavedObjects,ingestManager,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,dashboardMode,beatsManagement,transform,ingestPipelines,maps,licenseManagement,graph,dataEnhanced,visTypeVega,visTypeTable,visTypeMarkdown,tileMap,regionMap,inputControlVis,visualize,esUiShared,charts,lens,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,discover,discoverEnhanced,savedObjectsManagement,spaces,reporting,lists,eventLog,actions,case,alerts,stackAlerts,triggersActionsUi,ml,securitySolution,infra,monitoring,logstash,apm,uptime,bfetch,canvas]\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins\",\"taskManager\",\"taskManager\"],\"pid\":7,\"message\":\"TaskManager is identified by the Kibana UUID: bf01f365-e094-4cde-940d-3e0db65fa22a\"}\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:29:24,796Z\", \"level\": \"INFO\", \"component\": \"o.e.c.m.MetadataIndexTemplateService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"adding template [.management-beats] for index patterns [.management-beats]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins\",\"crossClusterReplication\"],\"pid\":7,\"message\":\"Your basic license does not support crossClusterReplication. Please upgrade your license.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins\",\"watcher\"],\"pid\":7,\"message\":\"Your basic license does not support watcher. Please upgrade your license.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins\",\"monitoring\",\"monitoring\",\"kibana-monitoring\"],\"pid\":7,\"message\":\"Starting monitoring stats collection\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:endpoint:user-artifact-packager:1.0.0]: version conflict, document already exists (current version [307637])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:Actions-actions_telemetry]: version conflict, document already exists (current version [733])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:apm-telemetry-task]: version conflict, document already exists (current version [1210])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:Alerting-alerting_telemetry]: version conflict, document already exists (current version [733])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:Lens-lens_telemetry]: version conflict, document already exists (current version [733])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:26Z\",\"tags\":[\"listening\",\"info\"],\"pid\":7,\"message\":\"Server running at http://0:5601\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:28Z\",\"tags\":[\"info\",\"http\",\"server\",\"Kibana\"],\"pid\":7,\"message\":\"http server running at http://0:5601\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:30Z\",\"tags\":[\"warning\",\"plugins\",\"reporting\"],\"pid\":7,\"message\":\"Enabling the Chromium sandbox provides an additional layer of protection.\"}\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"Microsoft\\Graph\\Generated\\Models\\AudioConferencing\" was found in both \"/home/jiminny/app/Services/MeetingGenerator/Overrides/Microsoft/Graph/Generated/Models/AudioConferencing.php\" and \"/home/jiminny/vendor/microsoft/microsoft-graph/src/Generated/Models/AudioConferencing.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\AwsS3V3\\AwsS3V3Adapter\" was found in both \"/home/jiminny/vendor/league/flysystem-aws-s3-v3/AwsS3V3Adapter.php\" and \"/home/jiminny/vendor/league/flysystem/src/AwsS3V3/AwsS3V3Adapter.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\AwsS3V3\\PortableVisibilityConverter\" was found in both \"/home/jiminny/vendor/league/flysystem-aws-s3-v3/PortableVisibilityConverter.php\" and \"/home/jiminny/vendor/league/flysystem/src/AwsS3V3/PortableVisibilityConverter.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\AwsS3V3\\VisibilityConverter\" was found in both \"/home/jiminny/vendor/league/flysystem-aws-s3-v3/VisibilityConverter.php\" and \"/home/jiminny/vendor/league/flysystem/src/AwsS3V3/VisibilityConverter.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\Local\\LocalFilesystemAdapter\" was found in both \"/home/jiminny/vendor/league/flysystem-local/LocalFilesystemAdapter.php\" and \"/home/jiminny/vendor/league/flysystem/src/Local/LocalFilesystemAdapter.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\Local\\FallbackMimeTypeDetector\" was found in both \"/home/jiminny/vendor/league/flysystem-local/FallbackMimeTypeDetector.php\" and \"/home/jiminny/vendor/league/flysystem/src/Local/FallbackMimeTypeDetector.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\Local\\LocalFilesystemAdapterTest\" was found in both \"/home/jiminny/vendor/league/flysystem-local/LocalFilesystemAdapterTest.php\" and \"/home/jiminny/vendor/league/flysystem/src/Local/LocalFilesystemAdapterTest.php\", the first will be used.\ndocker_lamp_1 | Class Tests\\Unit\\Http\\Controllers\\API\\V2\\OnDemandV2ControllerTest located in ./tests/Unit/Http/Controllers/Api/V2/OnDemandV2ControllerTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | Class Tests\\Unit\\Notifications\\PostmarkChannelTest located in ./tests/Feature/Notifications/PostmarkChannelTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | Class Tests\\Unit\\Http\\Controllers\\API\\V2\\OnDemandV2ControllerTest located in ./tests/Unit/Http/Controllers/Api/V2/OnDemandV2ControllerTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | Class Tests\\Unit\\Notifications\\PostmarkChannelTest located in ./tests/Feature/Notifications/PostmarkChannelTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | Class RingCentral\\SDK\\WebSocket\\WebSocketSubscriptionTest located in ./vendor/ringcentral/ringcentral-php/src/WebSocket/SubscriptionTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | > Illuminate\\Foundation\\ComposerScripts::postAutoloadDump\ndocker_lamp_1 | > @php artisan package:discover --ansi\ndocker_lamp_1 | \ndocker_lamp_1 | INFO Discovering packages. \ndocker_lamp_1 | \ndocker_lamp_1 | 24slides/laravel-saml2 ................................................ DONE\ndocker_lamp_1 | aws/aws-sdk-php-laravel ............................................... DONE\ndocker_lamp_1 | barryvdh/laravel-debugbar ............................................. DONE\ndocker_lamp_1 | barryvdh/laravel-dompdf ............................................... DONE\ndocker_lamp_1 | barryvdh/laravel-ide-helper ........................................... DONE\ndocker_lamp_1 | bepsvpt/secure-headers ................................................ DONE\ndocker_lamp_1 | chaseconey/laravel-datadog-helper ..................................... DONE\ndocker_lamp_1 | devio/pipedrive ....................................................... DONE\ndocker_lamp_1 | jasonmccreary/laravel-test-assertions ................................. DONE\ndocker_lamp_1 | jdavidbakr/cloudfront-proxies ......................................... DONE\ndocker_lamp_1 | kalnoy/nestedset ...................................................... DONE\ndocker_lamp_1 | laravel/passport ...................................................... DONE\ndocker_lamp_1 | laravel/slack-notification-channel .................................... DONE\ndocker_lamp_1 | laravel/tinker ........................................................ DONE\ndocker_lamp_1 | laravel/ui ............................................................ DONE\ndocker_lamp_1 | laravolt/avatar ....................................................... DONE\ndocker_lamp_1 | league/statsd ......................................................... DONE\ndocker_lamp_1 | nesbot/carbon ......................................................... DONE\ndocker_lamp_1 | nunomaduro/collision .................................................. DONE\ndocker_lamp_1 | nunomaduro/termwind ................................................... DONE\ndocker_lamp_1 | propaganistas/laravel-phone ........................................... DONE\ndocker_lamp_1 | santigarcor/laratrust ................................................. DONE\ndocker_lamp_1 | sentry/sentry-laravel ................................................. DONE\ndocker_lamp_1 | shiftonelabs/laravel-sqs-fifo-queue ................................... DONE\ndocker_lamp_1 | spatie/laravel-fractal ................................................ DONE\ndocker_lamp_1 | spatie/laravel-ignition ............................................... DONE\ndocker_lamp_1 | spatie/laravel-webhook-server ......................................... DONE\ndocker_lamp_1 | staudenmeir/belongs-to-through ........................................ DONE\ndocker_lamp_1 | vinkla/hashids ........................................................ DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 182 packages you are using are looking for funding.\ndocker_lamp_1 | Use the `composer fund` command to find out more!\ndocker_lamp_1 | infection/extension-installer: No extensions found\ndocker_lamp_1 | > Illuminate\\Foundation\\ComposerScripts::postInstall\ndocker_lamp_1 | + /home/jiminny/scripts/migrate.sh\ndocker_lamp_1 | \ndocker_lamp_1 | INFO Nothing to migrate. \ndocker_lamp_1 | \ndocker_lamp_1 | \ndocker_lamp_1 | INFO Configuration cached successfully. \ndocker_lamp_1 | \ndocker_lamp_1 | cp: cannot stat '/home/jiminny/bootstrap/cache/config-new.php': No such file or directory\ndocker_lamp_1 | + mv /home/jiminny/.env.local.bak /home/jiminny/.env.local\ndocker_lamp_1 | + [[ false == \\f\\a\\l\\s\\e ]]\ndocker_lamp_1 | + [[ 0 -eq 1 ]]\ndocker_lamp_1 | + [[ -f /home/jiminny/storage/oauth-private.key ]]\ndocker_lamp_1 | + [[ 0 -eq 1 ]]\ndocker_lamp_1 | + setup_local_environment\ndocker_lamp_1 | + storage_permissions_workaround\ndocker_lamp_1 | + [[ false != \\t\\r\\u\\e ]]\ndocker_lamp_1 | + ln -sf /home/jiminny/storage /home/jiminny/jiminny_storage\ndocker_lamp_1 | + return\ndocker_lamp_1 | + chmod 660 /home/jiminny/storage/oauth-private.key\ndocker_lamp_1 | + chmod 775 /home/jiminny/storage/framework\ndocker_lamp_1 | + chmod 775 /home/jiminny/storage/framework/views\ndocker_lamp_1 | + chmod 775 /home/jiminny/storage/framework/cache\ndocker_lamp_1 | + chmod 775 /home/jiminny/jiminny_storage/framework\ndocker_lamp_1 | + chmod -R 775 /home/jiminny/jiminny_storage/framework/cache\ndocker_lamp_1 | + chmod -R 775 /home/jiminny/jiminny_storage/framework/views\ndocker_lamp_1 | + find /home/jiminny/storage -maxdepth 100 -exec chmod g+w '{}' ';'\n\n\nv View in Docker Desktop o View Config w Enable Watch","depth":4,"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents\n% \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work\nWARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion \nAttaching to blackfire-1, datadog-1, jiminny_ext-1, mariadb-1, docker_lamp_1, elasticsearch, kibana, ngrok, redis\nmariadb-1 | 2026-04-17 07:28:13+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.4.5+maria~ubu2404 started.\nredis | 1:C 17 Apr 2026 07:28:13.623 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo\nredis | 1:C 17 Apr 2026 07:28:13.625 # Redis version=5.0.14, bits=64, commit=00000000, modified=0, pid=1, just started\nredis | 1:C 17 Apr 2026 07:28:13.625 # Configuration loaded\nredis | 1:M 17 Apr 2026 07:28:13.630 * Running mode=standalone, port=6379.\nredis | 1:M 17 Apr 2026 07:28:13.630 # Server initialized\nredis | 1:M 17 Apr 2026 07:28:13.630 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.\nredis | 1:M 17 Apr 2026 07:28:13.633 * Reading RDB preamble from AOF file...\nredis | 1:M 17 Apr 2026 07:28:13.634 * Reading the remaining AOF tail...\nblackfire-1 | [2026-04-17T07:28:13Z] ERROR: The server ID parameter is not set. Please run 'blackfire-agent -register' to configure it.\nblackfire-1 | usage blackfire-agent [options]\nblackfire-1 | --collector=\"https://blackfire.io\": Sets the URL of Blackfire's data collector\nblackfire-1 | --config=\"/etc/blackfire/agent\": Sets the path to the configuration file\nblackfire-1 | -d: Prints the current configuration\nblackfire-1 | --http-proxy=\"\": Sets the HTTP proxy to use\nblackfire-1 | --https-proxy=\"\": Sets the HTTPS proxy to use\nblackfire-1 | --log-file=\"stderr\": Sets the path of the log file. Use stderr to log to stderr\nblackfire-1 | --log-level=\"1\": log verbosity level (4: debug, 3: info, 2: warning, 1: error)\nblackfire-1 | --register: Helps you with registering the agent\nblackfire-1 | --server-id=\"\": Sets the server id used to authenticate with Blackfire API\nblackfire-1 | --server-token=\"\": Sets the server token used to authenticate with Blackfire API. It is unsafe to set this from the command line\nblackfire-1 | --socket=\"unix:///var/run/blackfire/agent.sock\": Sets the socket the agent should read traces from. Possible value can be a unix socket or a TCP address. ie: unix:///var/run/blackfire/agent.sock or tcp://127.0.0.1:8307\nblackfire-1 | --test: Tests the configuration\nblackfire-1 | --timeout=\"15s\": Sets the Blackfire connection timeout\nblackfire-1 | -v: Prints the version number\nngrok | t=2026-04-17T07:28:13+0000 lvl=info msg=\"no configuration paths supplied\"\nngrok | t=2026-04-17T07:28:13+0000 lvl=info msg=\"using configuration at default config path\" path=/home/ngrok/.ngrok2/ngrok.yml\nngrok | t=2026-04-17T07:28:13+0000 lvl=info msg=\"open config file\" path=/home/ngrok/.ngrok2/ngrok.yml err=nil\nblackfire-1 exited with code 1\nngrok | t=2026-04-17T07:28:13+0000 lvl=info msg=\"starting web service\" obj=web addr=0.0.0.0:4040\njiminny_ext-1 exited with code 0\ndocker_lamp_1 | + main\ndocker_lamp_1 | + declare START_DIR\ndocker_lamp_1 | +++ realpath /scripts/init-dev\ndocker_lamp_1 | ++ dirname /scripts/init-dev\ndocker_lamp_1 | + START_DIR=/scripts\ndocker_lamp_1 | + readonly START_DIR\ndocker_lamp_1 | + source /scripts/storage_init.sh\ndocker_lamp_1 | ++ set -o errexit\ndocker_lamp_1 | ++ set -o nounset\ndocker_lamp_1 | ++ set -o pipefail\ndocker_lamp_1 | + create_bind_mount\ndocker_lamp_1 | + [[ 0 == \\1 ]]\ndocker_lamp_1 | + configure_xdebug\ndocker_lamp_1 | + j2 /root/.j2_templates/xdebug/xdebug.ini.j2\nmariadb-1 | 2026-04-17 07:28:14+00:00 [Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB\nmariadb-1 | 2026-04-17 07:28:14+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'\nngrok | t=2026-04-17T07:28:14+0000 lvl=info msg=\"tunnel session started\" obj=tunnels.session\nngrok | t=2026-04-17T07:28:14+0000 lvl=info msg=\"client session established\" obj=csess id=34de209b437c\nmariadb-1 | 2026-04-17 07:28:14+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.4.5+maria~ubu2404 started.\nngrok | t=2026-04-17T07:28:14+0000 lvl=info msg=\"started tunnel\" obj=tunnels name=\"command_line (http)\" addr=http://lamp:3080 url=http://lukask.ngrok.io\nngrok | t=2026-04-17T07:28:14+0000 lvl=info msg=\"started tunnel\" obj=tunnels name=command_line addr=http://lamp:3080 url=https://lukask.ngrok.io\ndatadog-1 | [s6-init] making user provided files available at /var/run/s6/etc...exited 0.\nmariadb-1 | 2026-04-17 07:28:15+00:00 [Note] [Entrypoint]: MariaDB upgrade information missing, assuming required\nmariadb-1 | 2026-04-17 07:28:15+00:00 [Note] [Entrypoint]: MariaDB upgrade (mariadb-upgrade or creating healthcheck users) required, but skipped due to $MARIADB_AUTO_UPGRADE setting\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] Starting MariaDB 11.4.5-MariaDB-ubu2404 source revision 0771110266ff5c04216af4bf1243c65f8c67ccf4 server_uid LEIUY8nWIgtXzFZ8Uo7xi+G0Q88= as process 1\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Compressed tables use zlib 1.3\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Number of transaction pools: 1\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Using ARMv8 crc32 + pmull instructions\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Using liburing\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Initializing buffer pool, total size = 128.000MiB, chunk size = 2.000MiB\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Completed initialization of buffer pool\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: File system buffers for log disabled (block size=512 bytes)\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: End of log at LSN=7522656703\nngrok | t=2026-04-17T07:28:15+0000 lvl=info msg=\"update available\" obj=updater\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Opened 3 undo tablespaces\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: 128 rollback segments in 3 undo tablespaces are active.\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Setting file './ibtmp1' size to 12.000MiB. Physically writing the file full; Please wait ...\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: File './ibtmp1' size is now 12.000MiB.\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: log sequence number 7522656703; transaction id 11384091\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] Plugin 'FEEDBACK' is disabled.\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] Plugin 'wsrep-provider' is disabled.\ndocker_lamp_1 | + configure_blackfire\ndocker_lamp_1 | + j2 /root/.j2_templates/blackfire/extension.ini.j2\ndocker_lamp_1 | + j2 /root/.j2_templates/blackfire/cli.ini.j2\ndocker_lamp_1 | + declare EMPTY_DB\ndocker_lamp_1 | + db_is_empty\ndocker_lamp_1 | ++ find /var/lib/mysql/ -maxdepth 1\ndocker_lamp_1 | ++ wc -l\nmariadb-1 | 2026-04-17 7:28:15 0 [Note] InnoDB: Buffer pool(s) load completed at 260417 7:28:15\ndocker_lamp_1 | + [[ 11 -lt 5 ]]\ndocker_lamp_1 | + EMPTY_DB=0\ndocker_lamp_1 | + readonly EMPTY_DB\ndocker_lamp_1 | + [[ 0 -eq 1 ]]\ndocker_lamp_1 | + [[ local == \\l\\o\\c\\a\\l ]]\ndocker_lamp_1 | + set_nginx_domain dev.jiminny.com\ndocker_lamp_1 | + declare -r DOMAIN_NAME=dev.jiminny.com\ndocker_lamp_1 | + cp -f /etc/nginx/nginx_template.conf /etc/nginx/nginx.conf\ndocker_lamp_1 | + sed -i -E s~_JIMINNY_DOMAIN~app.dev.jiminny.com~g /etc/nginx/nginx.conf\ndocker_lamp_1 | + sed -i -E s~_JIMINNY_EXT_DOMAIN~ext.dev.jiminny.com~g /etc/nginx/nginx.conf\ndocker_lamp_1 | + sed -i -E s~_JIMINNY_WEB_DOMAIN~www.dev.jiminny.com~g /etc/nginx/nginx.conf\ndocker_lamp_1 | + [[ -n 3399 ]]\ndocker_lamp_1 | + sed -i -E 's~http:\\/\\/jiminny_ext:8080~http://jiminny_ext:3399~g' /etc/nginx/nginx.conf\ndocker_lamp_1 | + [[ -n host.docker.internal ]]\ndocker_lamp_1 | + sed -i -E 's~http:\\/\\/jiminny_ext~http://host.docker.internal~g' /etc/nginx/nginx.conf\ndocker_lamp_1 | + build_dev\ndocker_lamp_1 | + cd /home/jiminny/\ndocker_lamp_1 | + create_dot_env_local_file\ndocker_lamp_1 | + cp -f /home/jiminny/.env.local /home/jiminny/.env.local.bak\ndocker_lamp_1 | + create_dot_env\ndocker_lamp_1 | + [[ -f /home/jiminny/.env ]]\ndocker_lamp_1 | + return\ndocker_lamp_1 | + declare DB_ADMIN_PASSWORD\ndocker_lamp_1 | + declare DB_ADMIN_USERNAME\ndocker_lamp_1 | + declare DB_DEV_PASSWORD\ndocker_lamp_1 | + declare DB_DEV_USERNAME\ndocker_lamp_1 | + declare DB_ROOT_PASSWORD\ndocker_lamp_1 | + declare DB_ROOT_USERNAME\ndocker_lamp_1 | + declare DB_WEB_PASSWORD\ndocker_lamp_1 | + declare DB_WEB_USERNAME\ndocker_lamp_1 | ++ jq -r .DB_ADMIN_PASSWORD /home/jiminny/dev.json\ndocker_lamp_1 | + DB_ADMIN_PASSWORD='dgyt$rTe21-d'\ndocker_lamp_1 | ++ jq -r .DB_ADMIN_USERNAME /home/jiminny/dev.json\ndocker_lamp_1 | + DB_ADMIN_USERNAME=jmnyadmin\ndocker_lamp_1 | ++ jq -r .DB_DEV_PASSWORD /home/jiminny/dev.json\ndocker_lamp_1 | + DB_DEV_PASSWORD=rTr4sdQA65-Ad\ndocker_lamp_1 | ++ jq -r .DB_DEV_USERNAME /home/jiminny/dev.json\ndatadog-1 | [s6-init] ensuring user provided files have correct perms...exited 0.\ndocker_lamp_1 | + DB_DEV_USERNAME=jmnydev\ndocker_lamp_1 | ++ jq -r .DB_ROOT_PASSWORD /home/jiminny/dev.json\ndatadog-1 | [fix-attrs.d] applying ownership & permissions fixes...\ndocker_lamp_1 | + DB_ROOT_PASSWORD=b7h5-1fH3e54J\ndocker_lamp_1 | ++ jq -r .DB_ROOT_USERNAME /home/jiminny/dev.json\ndatadog-1 | [fix-attrs.d] done.\ndocker_lamp_1 | + DB_ROOT_USERNAME=root\ndocker_lamp_1 | ++ jq -r .DB_WEB_PASSWORD /home/jiminny/dev.json\ndatadog-1 | [cont-init.d] executing container initialization scripts...\ndocker_lamp_1 | + DB_WEB_PASSWORD=aR5-EWf23b8da\ndocker_lamp_1 | ++ jq -r .DB_WEB_USERNAME /home/jiminny/dev.json\ndatadog-1 | [cont-init.d] 01-check-apikey.sh: executing... \ndocker_lamp_1 | + DB_WEB_USERNAME=jmnyweb\ndocker_lamp_1 | + readonly DB_ADMIN_PASSWORD\ndocker_lamp_1 | + readonly DB_ADMIN_USERNAME\ndocker_lamp_1 | + readonly DB_DEV_PASSWORD\ndocker_lamp_1 | + readonly DB_DEV_USERNAME\ndocker_lamp_1 | + readonly DB_ROOT_PASSWORD\ndocker_lamp_1 | + readonly DB_ROOT_USERNAME\ndocker_lamp_1 | + readonly DB_WEB_PASSWORD\ndocker_lamp_1 | + readonly DB_WEB_USERNAME\ndocker_lamp_1 | + sed -i -E 's~DB_USERNAME=.*$~DB_USERNAME=jmnyadmin~g' /home/jiminny/.env\ndocker_lamp_1 | + sed -i -E 's~DB_PASSWORD=.*$~DB_PASSWORD=dgyt$rTe21-d~g' /home/jiminny/.env\nmariadb-1 | 2026-04-17 7:28:16 0 [Note] Server socket created on IP: '0.0.0.0'.\nmariadb-1 | 2026-04-17 7:28:16 0 [Note] Server socket created on IP: '::'.\ndocker_lamp_1 | + sed -i -E 's~DB_HOST=.*$~DB_HOST=mariadb~g' /home/jiminny/.env\ndocker_lamp_1 | + cp -f /home/jiminny/.env /home/jiminny/.env.root\ndocker_lamp_1 | + cp -f /home/jiminny/.env /home/jiminny/.env.migrate\ndocker_lamp_1 | + sed -i -E 's~DB_PASSWORD=.*$~DB_PASSWORD=b7h5-1fH3e54J~g' /home/jiminny/.env.migrate\ndocker_lamp_1 | + sed -i -E 's~DB_PASSWORD=.*$~DB_PASSWORD=b7h5-1fH3e54J~g' /home/jiminny/.env.root\ndocker_lamp_1 | + sed -i -E 's~DB_USERNAME=.*$~DB_USERNAME=root~g' /home/jiminny/.env.migrate\ndocker_lamp_1 | + sed -i -E 's~DB_USERNAME=.*$~DB_USERNAME=root~g' /home/jiminny/.env.root\nmariadb-1 | 2026-04-17 7:28:16 0 [Note] mariadbd: Event Scheduler: Loaded 0 events\ndatadog-1 | \ndatadog-1 | ==================================================================================\ndatadog-1 | You must set an DD_API_KEY environment variable to run the Datadog Agent container\ndatadog-1 | ==================================================================================\ndatadog-1 | \ndocker_lamp_1 | + cp -f /home/jiminny/.env /home/jiminny/.env.local\nmariadb-1 | 2026-04-17 7:28:16 0 [Note] mariadbd: ready for connections.\nmariadb-1 | Version: '11.4.5-MariaDB-ubu2404' socket: '/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution\ndocker_lamp_1 | + echo ''\ndocker_lamp_1 | + echo 'DB_ADMIN_PASSWORD=dgyt$rTe21-d'\ndocker_lamp_1 | + echo DB_ADMIN_USERNAME=jmnyadmin\ndocker_lamp_1 | + echo DB_DEV_PASSWORD=rTr4sdQA65-Ad\ndocker_lamp_1 | + echo DB_DEV_USERNAME=jmnydev\ndocker_lamp_1 | + echo DB_ROOT_PASSWORD=b7h5-1fH3e54J\ndocker_lamp_1 | + echo DB_ROOT_USERNAME=root\ndocker_lamp_1 | + echo DB_WEB_PASSWORD=aR5-EWf23b8da\ndocker_lamp_1 | + echo DB_WEB_USERNAME=jmnyweb\ndocker_lamp_1 | + [[ false == \\f\\a\\l\\s\\e ]]\ndocker_lamp_1 | + declare COMPOSER_PARAM=--prefer-dist\ndocker_lamp_1 | + [[ 0 -eq 1 ]]\ndocker_lamp_1 | + composer install --prefer-dist\ndatadog-1 | [cont-init.d] 01-check-apikey.sh: exited 1.\ndatadog-1 exited with code 1\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:18,579Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"version[7.10.2], pid[6], build[default/docker/747e1cc71def077253878a59143c1f785afa92b9/2021-01-13T04:42:47.157277Z], OS[Linux/6.12.54-linuxkit/aarch64], JVM[AdoptOpenJDK/OpenJDK 64-Bit Server VM/15.0.1/15.0.1+9]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:18,581Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"JVM home [/usr/share/elasticsearch/jdk], using bundled JDK [true]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:18,581Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"JVM arguments [-Xshare:auto, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -XX:+ShowCodeDetailsInExceptionMessages, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dio.netty.allocator.numDirectArenas=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.locale.providers=SPI,COMPAT, -Xms1g, -Xmx1g, -XX:+UseG1GC, -XX:G1ReservePercent=25, -XX:InitiatingHeapOccupancyPercent=30, -Djava.io.tmpdir=/tmp/elasticsearch-2077775440550164101, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m, -Des.cgroups.hierarchy.override=/, -Xms700m, -Xmx700m, -XX:MaxDirectMemorySize=367001600, -Des.path.home=/usr/share/elasticsearch, -Des.path.conf=/usr/share/elasticsearch/config, -Des.distribution.flavor=default, -Des.distribution.type=docker, -Des.bundled_jdk=true]\" }\ndocker_lamp_1 | Installing dependencies from lock file (including require-dev)\ndocker_lamp_1 | Verifying lock file contents can be installed on current platform.\ndocker_lamp_1 | Nothing to install, update or remove\ndocker_lamp_1 | Package doctrine/annotations is abandoned, you should avoid using it. No replacement was suggested.\ndocker_lamp_1 | Package symfony/debug is abandoned, you should avoid using it. Use symfony/error-handler instead.\ndocker_lamp_1 | Generating optimized autoload files\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,937Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [aggs-matrix-stats]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,938Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [analysis-common]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,938Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [constant-keyword]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,938Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [flattened]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,938Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [frozen-indices]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [ingest-common]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [ingest-geoip]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [ingest-user-agent]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [kibana]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,939Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [lang-expression]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,940Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [lang-mustache]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,940Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [lang-painless]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,941Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [mapper-extras]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,941Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [mapper-version]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,941Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [parent-join]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,941Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [percolator]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [rank-eval]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [reindex]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [repositories-metering-api]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [repository-url]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [search-business-rules]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,942Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [searchable-snapshots]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [spatial]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [transform]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [transport-netty4]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [unsigned-long]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [vectors]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [wildcard]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-analytics]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-async]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-async-search]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-autoscaling]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,943Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-ccr]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-core]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-data-streams]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-deprecation]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-enrich]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-eql]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-graph]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-identity-provider]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-ilm]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-logstash]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-ml]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-monitoring]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,944Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-ql]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-rollup]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-security]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-sql]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-stack]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-voting-only-node]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,945Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"loaded module [x-pack-watcher]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:21,946Z\", \"level\": \"INFO\", \"component\": \"o.e.p.PluginsService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"no plugins loaded\" }\nelasticsearch | {\"type\": \"deprecation\", \"timestamp\": \"2026-04-17T07:28:22,065Z\", \"level\": \"DEPRECATION\", \"component\": \"o.e.d.c.s.Settings\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[node.data] setting was deprecated in Elasticsearch and will be removed in a future release! See the breaking changes documentation for the next major version.\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:22,090Z\", \"level\": \"INFO\", \"component\": \"o.e.e.NodeEnvironment\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"using [1] data paths, mounts [[/usr/share/elasticsearch/data (/dev/vda1)]], net usable_space [14.8gb], net total_space [58.3gb], types [ext4]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:22,091Z\", \"level\": \"INFO\", \"component\": \"o.e.e.NodeEnvironment\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"heap size [700mb], compressed ordinary object pointers [true]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:22,256Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"node name [e802ad473a4f], node ID [e2ZKzgw4Q4aCf2w5ljWr1A], cluster name [docker-cluster], roles [transform, master, remote_cluster_client, data, ml, data_content, data_hot, data_warm, data_cold, ingest]\" }\nredis | 1:M 17 Apr 2026 07:28:28.232 * DB loaded from append only file: 14.601 seconds\nredis | 1:M 17 Apr 2026 07:28:28.232 * Ready to accept connections\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:29,740Z\", \"level\": \"INFO\", \"component\": \"o.e.x.m.p.l.CppLogMessageHandler\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"[controller/213] [Main.cc@114] controller (64 bit): Version 7.10.2 (Build 40a3af639d4698) Copyright (c) 2020 Elasticsearch BV\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:31,936Z\", \"level\": \"INFO\", \"component\": \"o.e.t.NettyAllocator\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"creating NettyAllocator with the following configs: [name=unpooled, suggested_max_allocation_size=256kb, factors={es.unsafe.use_unpooled_allocator=null, g1gc_enabled=true, g1gc_region_size=1mb, heap_size=700mb}]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:32,217Z\", \"level\": \"INFO\", \"component\": \"o.e.d.DiscoveryModule\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"using discovery type [single-node] and seed hosts providers [settings]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:33,367Z\", \"level\": \"WARN\", \"component\": \"o.e.g.DanglingIndicesState\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"gateway.auto_import_dangling_indices is disabled, dangling indices will not be automatically detected or imported and must be managed manually\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:34,469Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"initialized\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:34,470Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"starting ...\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:34,818Z\", \"level\": \"INFO\", \"component\": \"o.e.t.TransportService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"publish_address {172.18.0.7:9300}, bound_addresses {[::]:9300}\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:35,545Z\", \"level\": \"INFO\", \"component\": \"o.e.c.c.Coordinator\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"cluster UUID [8uh2w1CUSGyWYR_OvaKx6g]\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:35,815Z\", \"level\": \"INFO\", \"component\": \"o.e.c.s.MasterService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"elected-as-master ([1] nodes joined)[{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{172.18.0.7}{172.18.0.7:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20} elect leader, _BECOME_MASTER_TASK_, _FINISH_ELECTION_], term: 222, version: 8367, delta: master node changed {previous [], current [{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{172.18.0.7}{172.18.0.7:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:36,253Z\", \"level\": \"INFO\", \"component\": \"o.e.c.s.ClusterApplierService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"master node changed {previous [], current [{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{172.18.0.7}{172.18.0.7:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}, term: 222, version: 8367, reason: Publication{term=222, version=8367}\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:36,419Z\", \"level\": \"INFO\", \"component\": \"o.e.h.AbstractHttpServerTransport\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"publish_address {172.18.0.7:9200}, bound_addresses {[::]:9200}\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:36,420Z\", \"level\": \"INFO\", \"component\": \"o.e.n.Node\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"started\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:37,479Z\", \"level\": \"INFO\", \"component\": \"o.e.l.LicenseService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"license [85e882e5-5714-4173-a5dd-9baa841494a0] mode [basic] - valid\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:37,500Z\", \"level\": \"INFO\", \"component\": \"o.e.g.GatewayService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"recovered [15] indices into cluster_state\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:28:45,368Z\", \"level\": \"INFO\", \"component\": \"o.e.c.r.a.AllocationService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"Cluster health status changed from [RED] to [YELLOW] (reason: [shards started [[activities_testing][0]]]).\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:21Z\",\"tags\":[\"info\",\"plugins-service\"],\"pid\":7,\"message\":\"Plugin \\\"visTypeXy\\\" is disabled.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:21Z\",\"tags\":[\"info\",\"plugins-service\"],\"pid\":7,\"message\":\"Plugin \\\"auditTrail\\\" is disabled.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:21Z\",\"tags\":[\"warning\",\"config\",\"deprecation\"],\"pid\":7,\"message\":\"Config key [monitoring.cluster_alerts.email_notifications.email_address] will be required for email notifications to work in 8.0.\\\"\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:21Z\",\"tags\":[\"info\",\"plugins-system\"],\"pid\":7,\"message\":\"Setting up [96] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,code,mapsLegacy,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,newsfeed,kibanaLegacy,translations,share,legacyExport,embeddable,uiActionsEnhanced,expressions,data,home,observability,cloud,apmOss,console,consoleExtensions,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,dashboard,visualizations,visTypeTimelion,timelion,features,upgradeAssistant,security,snapshotRestore,encryptedSavedObjects,ingestManager,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,dashboardMode,beatsManagement,transform,ingestPipelines,maps,licenseManagement,graph,dataEnhanced,visTypeVega,visTypeTable,visTypeMarkdown,tileMap,regionMap,inputControlVis,visualize,esUiShared,charts,lens,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,discover,discoverEnhanced,savedObjectsManagement,spaces,reporting,lists,eventLog,actions,case,alerts,stackAlerts,triggersActionsUi,ml,securitySolution,infra,monitoring,logstash,apm,uptime,bfetch,canvas]\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"security\",\"config\"],\"pid\":7,\"message\":\"Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.yml\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"security\",\"config\"],\"pid\":7,\"message\":\"Session cookies will be transmitted over insecure connections. This is not recommended.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"encryptedSavedObjects\",\"config\"],\"pid\":7,\"message\":\"Generating a random key for xpack.encryptedSavedObjects.encryptionKey. To be able to decrypt encrypted saved objects attributes after restart, please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"ingestManager\"],\"pid\":7,\"message\":\"Fleet APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"reporting\",\"config\"],\"pid\":7,\"message\":\"Generating a random key for xpack.reporting.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.reporting.encryptionKey in kibana.yml\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"reporting\",\"config\"],\"pid\":7,\"message\":\"Found 'server.host: \\\"0\\\"' in Kibana configuration. This is incompatible with Reporting. To enable Reporting to work, 'xpack.reporting.kibanaServer.hostname: 0.0.0.0' is being automatically to the configuration. You can change the setting to 'server.host: 0.0.0.0' or add 'xpack.reporting.kibanaServer.hostname: 0.0.0.0' in kibana.yml to prevent this message.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"reporting\",\"config\"],\"pid\":7,\"message\":\"Chromium sandbox provides an additional layer of protection, but is not supported for Linux CentOS 8.3.2011\\n OS. Automatically setting 'xpack.reporting.capture.browser.chromium.disableSandbox: true'.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:22Z\",\"tags\":[\"warning\",\"plugins\",\"actions\",\"actions\"],\"pid\":7,\"message\":\"APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:23Z\",\"tags\":[\"warning\",\"plugins\",\"alerts\",\"plugins\",\"alerting\"],\"pid\":7,\"message\":\"APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:23Z\",\"tags\":[\"info\",\"plugins\",\"monitoring\",\"monitoring\"],\"pid\":7,\"message\":\"config sourced from: production cluster\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:23Z\",\"tags\":[\"info\",\"savedobjects-service\"],\"pid\":7,\"message\":\"Waiting until all Elasticsearch nodes are compatible with Kibana before starting saved objects migrations...\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:23Z\",\"tags\":[\"info\",\"savedobjects-service\"],\"pid\":7,\"message\":\"Starting saved objects migrations\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins-system\"],\"pid\":7,\"message\":\"Starting [96] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,code,mapsLegacy,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,newsfeed,kibanaLegacy,translations,share,legacyExport,embeddable,uiActionsEnhanced,expressions,data,home,observability,cloud,apmOss,console,consoleExtensions,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,dashboard,visualizations,visTypeTimelion,timelion,features,upgradeAssistant,security,snapshotRestore,encryptedSavedObjects,ingestManager,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,dashboardMode,beatsManagement,transform,ingestPipelines,maps,licenseManagement,graph,dataEnhanced,visTypeVega,visTypeTable,visTypeMarkdown,tileMap,regionMap,inputControlVis,visualize,esUiShared,charts,lens,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,discover,discoverEnhanced,savedObjectsManagement,spaces,reporting,lists,eventLog,actions,case,alerts,stackAlerts,triggersActionsUi,ml,securitySolution,infra,monitoring,logstash,apm,uptime,bfetch,canvas]\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins\",\"taskManager\",\"taskManager\"],\"pid\":7,\"message\":\"TaskManager is identified by the Kibana UUID: bf01f365-e094-4cde-940d-3e0db65fa22a\"}\nelasticsearch | {\"type\": \"server\", \"timestamp\": \"2026-04-17T07:29:24,796Z\", \"level\": \"INFO\", \"component\": \"o.e.c.m.MetadataIndexTemplateService\", \"cluster.name\": \"docker-cluster\", \"node.name\": \"e802ad473a4f\", \"message\": \"adding template [.management-beats] for index patterns [.management-beats]\", \"cluster.uuid\": \"8uh2w1CUSGyWYR_OvaKx6g\", \"node.id\": \"e2ZKzgw4Q4aCf2w5ljWr1A\" }\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins\",\"crossClusterReplication\"],\"pid\":7,\"message\":\"Your basic license does not support crossClusterReplication. Please upgrade your license.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins\",\"watcher\"],\"pid\":7,\"message\":\"Your basic license does not support watcher. Please upgrade your license.\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:24Z\",\"tags\":[\"info\",\"plugins\",\"monitoring\",\"monitoring\",\"kibana-monitoring\"],\"pid\":7,\"message\":\"Starting monitoring stats collection\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:endpoint:user-artifact-packager:1.0.0]: version conflict, document already exists (current version [307637])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:Actions-actions_telemetry]: version conflict, document already exists (current version [733])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:apm-telemetry-task]: version conflict, document already exists (current version [1210])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:Alerting-alerting_telemetry]: version conflict, document already exists (current version [733])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:25Z\",\"tags\":[\"error\",\"elasticsearch\",\"data\"],\"pid\":7,\"message\":\"[version_conflict_engine_exception]: [task:Lens-lens_telemetry]: version conflict, document already exists (current version [733])\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:26Z\",\"tags\":[\"listening\",\"info\"],\"pid\":7,\"message\":\"Server running at http://0:5601\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:28Z\",\"tags\":[\"info\",\"http\",\"server\",\"Kibana\"],\"pid\":7,\"message\":\"http server running at http://0:5601\"}\nkibana | {\"type\":\"log\",\"@timestamp\":\"2026-04-17T07:29:30Z\",\"tags\":[\"warning\",\"plugins\",\"reporting\"],\"pid\":7,\"message\":\"Enabling the Chromium sandbox provides an additional layer of protection.\"}\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"Microsoft\\Graph\\Generated\\Models\\AudioConferencing\" was found in both \"/home/jiminny/app/Services/MeetingGenerator/Overrides/Microsoft/Graph/Generated/Models/AudioConferencing.php\" and \"/home/jiminny/vendor/microsoft/microsoft-graph/src/Generated/Models/AudioConferencing.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\AwsS3V3\\AwsS3V3Adapter\" was found in both \"/home/jiminny/vendor/league/flysystem-aws-s3-v3/AwsS3V3Adapter.php\" and \"/home/jiminny/vendor/league/flysystem/src/AwsS3V3/AwsS3V3Adapter.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\AwsS3V3\\PortableVisibilityConverter\" was found in both \"/home/jiminny/vendor/league/flysystem-aws-s3-v3/PortableVisibilityConverter.php\" and \"/home/jiminny/vendor/league/flysystem/src/AwsS3V3/PortableVisibilityConverter.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\AwsS3V3\\VisibilityConverter\" was found in both \"/home/jiminny/vendor/league/flysystem-aws-s3-v3/VisibilityConverter.php\" and \"/home/jiminny/vendor/league/flysystem/src/AwsS3V3/VisibilityConverter.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\Local\\LocalFilesystemAdapter\" was found in both \"/home/jiminny/vendor/league/flysystem-local/LocalFilesystemAdapter.php\" and \"/home/jiminny/vendor/league/flysystem/src/Local/LocalFilesystemAdapter.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\Local\\FallbackMimeTypeDetector\" was found in both \"/home/jiminny/vendor/league/flysystem-local/FallbackMimeTypeDetector.php\" and \"/home/jiminny/vendor/league/flysystem/src/Local/FallbackMimeTypeDetector.php\", the first will be used.\ndocker_lamp_1 | Warning: Ambiguous class resolution, \"League\\Flysystem\\Local\\LocalFilesystemAdapterTest\" was found in both \"/home/jiminny/vendor/league/flysystem-local/LocalFilesystemAdapterTest.php\" and \"/home/jiminny/vendor/league/flysystem/src/Local/LocalFilesystemAdapterTest.php\", the first will be used.\ndocker_lamp_1 | Class Tests\\Unit\\Http\\Controllers\\API\\V2\\OnDemandV2ControllerTest located in ./tests/Unit/Http/Controllers/Api/V2/OnDemandV2ControllerTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | Class Tests\\Unit\\Notifications\\PostmarkChannelTest located in ./tests/Feature/Notifications/PostmarkChannelTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | Class Tests\\Unit\\Http\\Controllers\\API\\V2\\OnDemandV2ControllerTest located in ./tests/Unit/Http/Controllers/Api/V2/OnDemandV2ControllerTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | Class Tests\\Unit\\Notifications\\PostmarkChannelTest located in ./tests/Feature/Notifications/PostmarkChannelTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | Class RingCentral\\SDK\\WebSocket\\WebSocketSubscriptionTest located in ./vendor/ringcentral/ringcentral-php/src/WebSocket/SubscriptionTest.php does not comply with psr-4 autoloading standard. Skipping.\ndocker_lamp_1 | > Illuminate\\Foundation\\ComposerScripts::postAutoloadDump\ndocker_lamp_1 | > @php artisan package:discover --ansi\ndocker_lamp_1 | \ndocker_lamp_1 | INFO Discovering packages. \ndocker_lamp_1 | \ndocker_lamp_1 | 24slides/laravel-saml2 ................................................ DONE\ndocker_lamp_1 | aws/aws-sdk-php-laravel ............................................... DONE\ndocker_lamp_1 | barryvdh/laravel-debugbar ............................................. DONE\ndocker_lamp_1 | barryvdh/laravel-dompdf ............................................... DONE\ndocker_lamp_1 | barryvdh/laravel-ide-helper ........................................... DONE\ndocker_lamp_1 | bepsvpt/secure-headers ................................................ DONE\ndocker_lamp_1 | chaseconey/laravel-datadog-helper ..................................... DONE\ndocker_lamp_1 | devio/pipedrive ....................................................... DONE\ndocker_lamp_1 | jasonmccreary/laravel-test-assertions ................................. DONE\ndocker_lamp_1 | jdavidbakr/cloudfront-proxies ......................................... DONE\ndocker_lamp_1 | kalnoy/nestedset ...................................................... DONE\ndocker_lamp_1 | laravel/passport ...................................................... DONE\ndocker_lamp_1 | laravel/slack-notification-channel .................................... DONE\ndocker_lamp_1 | laravel/tinker ........................................................ DONE\ndocker_lamp_1 | laravel/ui ............................................................ DONE\ndocker_lamp_1 | laravolt/avatar ....................................................... DONE\ndocker_lamp_1 | league/statsd ......................................................... DONE\ndocker_lamp_1 | nesbot/carbon ......................................................... DONE\ndocker_lamp_1 | nunomaduro/collision .................................................. DONE\ndocker_lamp_1 | nunomaduro/termwind ................................................... DONE\ndocker_lamp_1 | propaganistas/laravel-phone ........................................... DONE\ndocker_lamp_1 | santigarcor/laratrust ................................................. DONE\ndocker_lamp_1 | sentry/sentry-laravel ................................................. DONE\ndocker_lamp_1 | shiftonelabs/laravel-sqs-fifo-queue ................................... DONE\ndocker_lamp_1 | spatie/laravel-fractal ................................................ DONE\ndocker_lamp_1 | spatie/laravel-ignition ............................................... DONE\ndocker_lamp_1 | spatie/laravel-webhook-server ......................................... DONE\ndocker_lamp_1 | staudenmeir/belongs-to-through ........................................ DONE\ndocker_lamp_1 | vinkla/hashids ........................................................ DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 182 packages you are using are looking for funding.\ndocker_lamp_1 | Use the `composer fund` command to find out more!\ndocker_lamp_1 | infection/extension-installer: No extensions found\ndocker_lamp_1 | > Illuminate\\Foundation\\ComposerScripts::postInstall\ndocker_lamp_1 | + /home/jiminny/scripts/migrate.sh\ndocker_lamp_1 | \ndocker_lamp_1 | INFO Nothing to migrate. \ndocker_lamp_1 | \ndocker_lamp_1 | \ndocker_lamp_1 | INFO Configuration cached successfully. \ndocker_lamp_1 | \ndocker_lamp_1 | cp: cannot stat '/home/jiminny/bootstrap/cache/config-new.php': No such file or directory\ndocker_lamp_1 | + mv /home/jiminny/.env.local.bak /home/jiminny/.env.local\ndocker_lamp_1 | + [[ false == \\f\\a\\l\\s\\e ]]\ndocker_lamp_1 | + [[ 0 -eq 1 ]]\ndocker_lamp_1 | + [[ -f /home/jiminny/storage/oauth-private.key ]]\ndocker_lamp_1 | + [[ 0 -eq 1 ]]\ndocker_lamp_1 | + setup_local_environment\ndocker_lamp_1 | + storage_permissions_workaround\ndocker_lamp_1 | + [[ false != \\t\\r\\u\\e ]]\ndocker_lamp_1 | + ln -sf /home/jiminny/storage /home/jiminny/jiminny_storage\ndocker_lamp_1 | + return\ndocker_lamp_1 | + chmod 660 /home/jiminny/storage/oauth-private.key\ndocker_lamp_1 | + chmod 775 /home/jiminny/storage/framework\ndocker_lamp_1 | + chmod 775 /home/jiminny/storage/framework/views\ndocker_lamp_1 | + chmod 775 /home/jiminny/storage/framework/cache\ndocker_lamp_1 | + chmod 775 /home/jiminny/jiminny_storage/framework\ndocker_lamp_1 | + chmod -R 775 /home/jiminny/jiminny_storage/framework/cache\ndocker_lamp_1 | + chmod -R 775 /home/jiminny/jiminny_storage/framework/views\ndocker_lamp_1 | + find /home/jiminny/storage -maxdepth 100 -exec chmod g+w '{}' ';'\n\n\nv View in Docker Desktop o View Config w Enable Watch","is_focused":true},{"role":"AXButton","text":"Menu","depth":3,"bounds":{"left":0.5058594,"top":1.0,"width":0.005859375,"height":-0.05590272},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥1 DOCKER (docker-compose)","depth":3,"bounds":{"left":0.24375,"top":1.0,"width":0.26015624,"height":-0.056249976},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod\n(lukas@jiminny-prod-bastion) Verification code: \nWelcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Fri Apr 17 05:56:21 UTC 2026\n\n System load: 0.0 Processes: 123\n Usage of /: 59.3% of 7.57GB Users logged in: 1\n Memory usage: 34% IPv4 address for eth0: 10.30.45.167\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n42 updates can be applied immediately.\n10 of these updates are standard security updates.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu Apr 16 06:55:09 2026 from 212.39.71.189\nlukas@jiminny-prod-bastion:~$","depth":5,"bounds":{"left":0.5144531,"top":0.6326389,"width":0.27539062,"height":0.36736113},"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod\n(lukas@jiminny-prod-bastion) Verification code: \nWelcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Fri Apr 17 05:56:21 UTC 2026\n\n System load: 0.0 Processes: 123\n Usage of /: 59.3% of 7.57GB Users logged in: 1\n Memory usage: 34% IPv4 address for eth0: 10.30.45.167\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n42 updates can be applied immediately.\n10 of these updates are standard security updates.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu Apr 16 06:55:09 2026 from 212.39.71.189\nlukas@jiminny-prod-bastion:~$","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.7875,"top":1.0,"width":0.005859375,"height":-0.05590272},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥2 PROD (ssh)","depth":4,"bounds":{"left":0.525,"top":1.0,"width":0.26054686,"height":-0.056249976},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ eu\n(lukas@jiminny-eu-bastion) Verification code: \nWelcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1047-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Fri Apr 17 05:56:31 UTC 2026\n\n System load: 0.0 Processes: 118\n Usage of /: 58.0% of 7.57GB Users logged in: 1\n Memory usage: 18% IPv4 address for eth0: 10.20.163.228\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n90 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu Apr 16 06:55:03 2026 from 212.39.71.189\nlukas@jiminny-eu-bastion:~$","depth":5,"bounds":{"left":0.5144531,"top":0.7513889,"width":0.27539062,"height":0.2486111},"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ eu\n(lukas@jiminny-eu-bastion) Verification code: \nWelcome to Ubuntu 22.04.4 LTS (GNU/Linux 6.8.0-1047-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Fri Apr 17 05:56:31 UTC 2026\n\n System load: 0.0 Processes: 118\n Usage of /: 58.0% of 7.57GB Users logged in: 1\n Memory usage: 18% IPv4 address for eth0: 10.20.163.228\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n90 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Thu Apr 16 06:55:03 2026 from 212.39.71.189\nlukas@jiminny-eu-bastion:~$","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥3 EU (ssh)","depth":4,"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"value":"Last login: Thu Apr 16 15:43:43 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"role_description":"button","is_enabled":true,"is_focused":false}]...
|
9165978701348137727
|
-7477059490927161586
|
app_switch
|
accessibility
|
NULL
|
Last login: Thu Apr 16 15:43:43 on console
Poetry Last login: Thu Apr 16 15:43:43 on console
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/infrastructure/dev/docker or its parents
%
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $ work
WARN[0000] /Users/lukas/jiminny/infrastructure/dev/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
Attaching to blackfire-1, datadog-1, jiminny_ext-1, mariadb-1, docker_lamp_1, elasticsearch, kibana, ngrok, redis
mariadb-1 | 2026-04-17 07:28:13+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:11.4.5+maria~ubu2404 started.
redis | 1:C 17 Apr 2026 07:28:13.623 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis | 1:C 17 Apr 2026 07:28:13.625 # Redis version=5.0.14, bits=64, commit=00000000, modified=0, pid=1, just started
redis | 1:C 17 Apr 2026 07:28:13.625 # Configuration loaded
redis | 1:M 17 Apr 2026 07:28:13.630 * Running mode=standalone, port=6379.
redis | 1:M 17 Apr 2026 07:28:13.630 # Server initialized
redis | 1:M 17 Apr 2026 07:28:13.630 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
redis | 1:M 17 Apr 2026 07:28:13.633 * Reading RDB preamble from AOF file...
redis | 1:M 17 Apr 2026 07:28:13.634 * Reading the remaining AOF tail...
blackfire-1 | [2026-04-17T07:28:13Z] ERROR: The server ID parameter is not set. Please run 'blackfire-agent -register' to configure it.
blackfire-1 | usage blackfire-agent [options]
blackfire-1 | --collector="[URL_WITH_CREDENTIALS] controller (64 bit): Version 7.10.2 (Build 40a3af639d4698) Copyright (c) 2020 Elasticsearch BV" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:31,936Z", "level": "INFO", "component": "o.e.t.NettyAllocator", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "creating NettyAllocator with the following configs: [name=unpooled, suggested_max_allocation_size=256kb, factors={es.unsafe.use_unpooled_allocator=null, g1gc_enabled=true, g1gc_region_size=1mb, heap_size=700mb}]" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:32,217Z", "level": "INFO", "component": "o.e.d.DiscoveryModule", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "using discovery type [single-node] and seed hosts providers [settings]" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:33,367Z", "level": "WARN", "component": "o.e.g.DanglingIndicesState", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "gateway.auto_import_dangling_indices is disabled, dangling indices will not be automatically detected or imported and must be managed manually" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:34,469Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "initialized" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:34,470Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "starting ..." }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:34,818Z", "level": "INFO", "component": "o.e.t.TransportService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "publish_address {[IP_ADDRESS]:9300}, bound_addresses {[::]:9300}" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:35,545Z", "level": "INFO", "component": "o.e.c.c.Coordinator", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "cluster UUID [8uh2w1CUSGyWYR_OvaKx6g]" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:35,815Z", "level": "INFO", "component": "o.e.c.s.MasterService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "elected-as-master ([1] nodes joined)[{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{[IP_ADDRESS]}{[IP_ADDRESS]:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20} elect leader, _BECOME_MASTER_TASK_, _FINISH_ELECTION_], term: 222, version: 8367, delta: master node changed {previous [], current [{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{[IP_ADDRESS]}{[IP_ADDRESS]:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:36,253Z", "level": "INFO", "component": "o.e.c.s.ClusterApplierService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "master node changed {previous [], current [{e802ad473a4f}{e2ZKzgw4Q4aCf2w5ljWr1A}{bTvcL9hdT9uFnHSNUmBtpQ}{[IP_ADDRESS]}{[IP_ADDRESS]:9300}{cdhilmrstw}{ml.machine_memory=4109217792, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}, term: 222, version: 8367, reason: Publication{term=222, version=8367}" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:36,419Z", "level": "INFO", "component": "o.e.h.AbstractHttpServerTransport", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "publish_address {[IP_ADDRESS]:9200}, bound_addresses {[::]:9200}", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:36,420Z", "level": "INFO", "component": "o.e.n.Node", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "started", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:37,479Z", "level": "INFO", "component": "o.e.l.LicenseService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "license [85e882e5-5714-4173-a5dd-9baa841494a0] mode [basic] - valid", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:37,500Z", "level": "INFO", "component": "o.e.g.GatewayService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "recovered [15] indices into cluster_state", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:28:45,368Z", "level": "INFO", "component": "o.e.c.r.a.AllocationService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "Cluster health status changed from [RED] to [YELLOW] (reason: [shards started [[activities_testing][0]]]).", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:21Z","tags":["info","plugins-service"],"pid":7,"message":"Plugin \"visTypeXy\" is disabled."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:21Z","tags":["info","plugins-service"],"pid":7,"message":"Plugin \"auditTrail\" is disabled."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:21Z","tags":["warning","config","deprecation"],"pid":7,"message":"Config key [monitoring.cluster_alerts.email_notifications.email_address] will be required for email notifications to work in 8.0.\""}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:21Z","tags":["info","plugins-system"],"pid":7,"message":"Setting up [96] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,code,mapsLegacy,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,newsfeed,kibanaLegacy,translations,share,legacyExport,embeddable,uiActionsEnhanced,expressions,data,home,observability,cloud,apmOss,console,consoleExtensions,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,dashboard,visualizations,visTypeTimelion,timelion,features,upgradeAssistant,security,snapshotRestore,encryptedSavedObjects,ingestManager,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,dashboardMode,beatsManagement,transform,ingestPipelines,maps,licenseManagement,graph,dataEnhanced,visTypeVega,visTypeTable,visTypeMarkdown,tileMap,regionMap,inputControlVis,visualize,esUiShared,charts,lens,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,discover,discoverEnhanced,savedObjectsManagement,spaces,reporting,lists,eventLog,actions,case,alerts,stackAlerts,triggersActionsUi,ml,securitySolution,infra,monitoring,logstash,apm,uptime,bfetch,canvas]"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","security","config"],"pid":7,"message":"Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.yml"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","security","config"],"pid":7,"message":"Session cookies will be transmitted over insecure connections. This is not recommended."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","encryptedSavedObjects","config"],"pid":7,"message":"Generating a random key for xpack.encryptedSavedObjects.encryptionKey. To be able to decrypt encrypted saved objects attributes after restart, please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","ingestManager"],"pid":7,"message":"Fleet APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","reporting","config"],"pid":7,"message":"Generating a random key for xpack.reporting.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.reporting.encryptionKey in kibana.yml"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","reporting","config"],"pid":7,"message":"Found 'server.host: \"0\"' in Kibana configuration. This is incompatible with Reporting. To enable Reporting to work, 'xpack.reporting.kibanaServer.hostname: [IP_ADDRESS]' is being automatically to the configuration. You can change the setting to 'server.host: [IP_ADDRESS]' or add 'xpack.reporting.kibanaServer.hostname: [IP_ADDRESS]' in kibana.yml to prevent this message."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","reporting","config"],"pid":7,"message":"Chromium sandbox provides an additional layer of protection, but is not supported for Linux CentOS 8.3.2011\n OS. Automatically setting 'xpack.reporting.capture.browser.chromium.disableSandbox: true'."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:22Z","tags":["warning","plugins","actions","actions"],"pid":7,"message":"APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:23Z","tags":["warning","plugins","alerts","plugins","alerting"],"pid":7,"message":"APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:23Z","tags":["info","plugins","monitoring","monitoring"],"pid":7,"message":"config sourced from: production cluster"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:23Z","tags":["info","savedobjects-service"],"pid":7,"message":"Waiting until all Elasticsearch nodes are compatible with Kibana before starting saved objects migrations..."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:23Z","tags":["info","savedobjects-service"],"pid":7,"message":"Starting saved objects migrations"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins-system"],"pid":7,"message":"Starting [96] plugins: [taskManager,licensing,globalSearch,globalSearchProviders,code,mapsLegacy,usageCollection,xpackLegacy,telemetryCollectionManager,telemetry,telemetryCollectionXpack,kibanaUsageCollection,securityOss,newsfeed,kibanaLegacy,translations,share,legacyExport,embeddable,uiActionsEnhanced,expressions,data,home,observability,cloud,apmOss,console,consoleExtensions,searchprofiler,painlessLab,grokdebugger,management,indexPatternManagement,advancedSettings,fileUpload,savedObjects,dashboard,visualizations,visTypeTimelion,timelion,features,upgradeAssistant,security,snapshotRestore,encryptedSavedObjects,ingestManager,indexManagement,remoteClusters,crossClusterReplication,indexLifecycleManagement,enterpriseSearch,dashboardMode,beatsManagement,transform,ingestPipelines,maps,licenseManagement,graph,dataEnhanced,visTypeVega,visTypeTable,visTypeMarkdown,tileMap,regionMap,inputControlVis,visualize,esUiShared,charts,lens,visTypeVislib,visTypeTimeseries,rollup,visTypeTagcloud,visTypeMetric,watcher,discover,discoverEnhanced,savedObjectsManagement,spaces,reporting,lists,eventLog,actions,case,alerts,stackAlerts,triggersActionsUi,ml,securitySolution,infra,monitoring,logstash,apm,uptime,bfetch,canvas]"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins","taskManager","taskManager"],"pid":7,"message":"TaskManager is identified by the Kibana UUID: bf01f365-e094-4cde-940d-3e0db65fa22a"}
elasticsearch | {"type": "server", "timestamp": "2026-04-17T07:29:24,796Z", "level": "INFO", "component": "o.e.c.m.MetadataIndexTemplateService", "cluster.name": "docker-cluster", "node.name": "e802ad473a4f", "message": "adding template [.management-beats] for index patterns [.management-beats]", "cluster.uuid": "8uh2w1CUSGyWYR_OvaKx6g", "node.id": "e2ZKzgw4Q4aCf2w5ljWr1A" }
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins","crossClusterReplication"],"pid":7,"message":"Your basic license does not support crossClusterReplication. Please upgrade your license."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins","watcher"],"pid":7,"message":"Your basic license does not support watcher. Please upgrade your license."}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:24Z","tags":["info","plugins","monitoring","monitoring","kibana-monitoring"],"pid":7,"message":"Starting monitoring stats collection"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:endpoint:user-artifact-packager:1.0.0]: version conflict, document already exists (current version [307637])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:Actions-actions_telemetry]: version conflict, document already exists (current version [733])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:apm-telemetry-task]: version conflict, document already exists (current version [1210])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:Alerting-alerting_telemetry]: version conflict, document already exists (current version [733])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:25Z","tags":["error","elasticsearch","data"],"pid":7,"message":"[version_conflict_engine_exception]: [task:Lens-lens_telemetry]: version conflict, document already exists (current version [733])"}
kibana | {"type":"log","@timestamp":"2026-04-17T07:29:26Z","tags":["listening","info"],"pid":7,"message":"Server running at [URL_WITH_CREDENTIALS] server running at [URL_WITH_CREDENTIALS] the Chromium sandbox provides an additional layer of protection."}
docker_lamp_1 | Warning: Ambiguous class resolution, "Microsoft\Graph\Generated\Models\AudioConferencing" was found in both "/home/jiminny/app/Services/MeetingGenerator/Overrides/Microsoft/Graph/Generated/Models/AudioConferencing.php" and "/home/jiminny/vendor/microsoft/microsoft-graph/src/Generated/Models/AudioConferencing.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\AwsS3V3\AwsS3V3Adapter" was found in both "/home/jiminny/vendor/league/flysystem-aws-s3-v3/AwsS3V3Adapter.php" and "/home/jiminny/vendor/league/flysystem/src/AwsS3V3/AwsS3V3Adapter.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\AwsS3V3\PortableVisibilityConverter" was found in both "/home/jiminny/vendor/league/flysystem-aws-s3-v3/PortableVisibilityConverter.php" and "/home/jiminny/vendor/league/flysystem/src/AwsS3V3/PortableVisibilityConverter.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\AwsS3V3\VisibilityConverter" was found in both "/home/jiminny/vendor/league/flysystem-aws-s3-v3/VisibilityConverter.php" and "/home/jiminny/vendor/league/flysystem/src/AwsS3V3/VisibilityConverter.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\Local\LocalFilesystemAdapter" was found in both "/home/jiminny/vendor/league/flysystem-local/LocalFilesystemAdapter.php" and "/home/jiminny/vendor/league/flysystem/src/Local/LocalFilesystemAdapter.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\Local\FallbackMimeTypeDetector" was found in both "/home/jiminny/vendor/league/flysystem-local/FallbackMimeTypeDetector.php" and "/home/jiminny/vendor/league/flysystem/src/Local/FallbackMimeTypeDetector.php", the first will be used.
docker_lamp_1 | Warning: Ambiguous class resolution, "League\Flysystem\Local\LocalFilesystemAdapterTest" was found in both "/home/jiminny/vendor/league/flysystem-local/LocalFilesystemAdapterTest.php" and "/home/jiminny/vendor/league/flysystem/src/Local/LocalFilesystemAdapterTest.php", the first will be used.
docker_lamp_1 | Class Tests\Unit\Http\Controllers\API\V2\OnDemandV2ControllerTest located in ./tests/Unit/Http/Controllers/Api/V2/OnDemandV2ControllerTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | Class Tests\Unit\Notifications\PostmarkChannelTest located in ./tests/Feature/Notifications/PostmarkChannelTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | Class Tests\Unit\Http\Controllers\API\V2\OnDemandV2ControllerTest located in ./tests/Unit/Http/Controllers/Api/V2/OnDemandV2ControllerTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | Class Tests\Unit\Notifications\PostmarkChannelTest located in ./tests/Feature/Notifications/PostmarkChannelTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | Class RingCentral\SDK\WebSocket\WebSocketSubscriptionTest located in ./vendor/ringcentral/ringcentral-php/src/WebSocket/SubscriptionTest.php does not comply with psr-4 autoloading standard. Skipping.
docker_lamp_1 | > Illuminate\Foundation\ComposerScripts::postAutoloadDump
docker_lamp_1 | > @php artisan package:discover --ansi
docker_lamp_1 |
docker_lamp_1 | INFO Discovering packages.
docker_lamp_1 |
docker_lamp_1 | 24slides/laravel-saml2 [PASSWORD_DOTS] DONE
docker_lamp_1 | aws/aws-sdk-php-laravel [PASSWORD_DOTS] DONE
docker_lamp_1 | barryvdh/laravel-debugbar [PASSWORD_DOTS] DONE
docker_lamp_1 | barryvdh/laravel-dompdf [PASSWORD_DOTS] DONE
docker_lamp_1 | barryvdh/laravel-ide-helper [PASSWORD_DOTS] DONE
docker_lamp_1 | bepsvpt/secure-headers [PASSWORD_DOTS] DONE
docker_lamp_1 | chaseconey/laravel-datadog-helper [PASSWORD_DOTS] DONE
docker_lamp_1 | devio/pipedrive [PASSWORD_DOTS] DONE
docker_lamp_1 | jasonmccreary/laravel-test-assertions [PASSWORD_DOTS] DONE
docker_lamp_1 | jdavidbakr/cloudfront-proxies [PASSWORD_DOTS] DONE
docker_lamp_1 | kalnoy/nestedset [PASSWORD_DOTS] DONE
docker_lamp_1 | laravel/passport [PASSWORD_DOTS] DONE
docker_lamp_1...
|
NULL
|
|
42713
|
910
|
59
|
2026-04-17T07:33:57.515287+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411237515_m1.jpg...
|
Firefox
|
Meet - Backend Chapter — Work
|
True
|
meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovali meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.com...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Backend Chapter","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Return to home screen","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Switch account","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Switch account","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More options","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Turn off camera","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Turn on background blur","depth":13,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Microphone: soundcore AeroClip","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Speaker: System Default Speaker Device","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Camera: FaceTime HD Camera","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Backgrounds and effects","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Backend Chapter","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backend Chapter","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov is in this call","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Use Gemini to take notes Share notes and transcript","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use Gemini to take notes","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Share notes and transcript","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Start","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Join now","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Join now","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Other ways to join","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your camera is on. Your microphone is on.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Background is now replaced","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6010097635338979075
|
1101227023045744603
|
app_switch
|
accessibility
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
NULL
|
|
42714
|
911
|
53
|
2026-04-17T07:33:57.515262+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411237515_m2.jpg...
|
Firefox
|
Meet - Backend Chapter — Work
|
True
|
meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovali meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.com...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Backend Chapter","depth":4,"bounds":{"left":0.35351562,"top":0.23819445,"width":0.019140625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.35429686,"top":0.23819445,"width":0.005859375,"height":0.010416667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.35664064,"top":0.26805556,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.35351562,"top":0.69166666,"width":0.019140625,"height":0.027083334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.35351562,"top":0.71875,"width":0.019140625,"height":0.024305556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.35351562,"top":0.7430556,"width":0.019140625,"height":0.023611112},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.35351562,"top":0.76666665,"width":0.019140625,"height":0.024305556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.35351562,"top":0.79097223,"width":0.019140625,"height":0.027083334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Return to home screen","depth":10,"bounds":{"left":0.37890625,"top":0.24930556,"width":0.041015625,"height":0.027777778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.8257812,"top":0.25069445,"width":0.065625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Switch account","depth":11,"bounds":{"left":0.85664064,"top":0.26180556,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Switch account","depth":12,"bounds":{"left":0.85664064,"top":0.26180556,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":14,"bounds":{"left":0.415625,"top":0.36875,"width":0.03515625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More options","depth":13,"bounds":{"left":0.67578125,"top":0.35833332,"width":0.01875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":14,"bounds":{"left":0.51484376,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Turn off camera","depth":14,"bounds":{"left":0.54296875,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Turn on background blur","depth":13,"bounds":{"left":0.57109374,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Microphone: soundcore AeroClip","depth":13,"bounds":{"left":0.409375,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Speaker: System Default Speaker Device","depth":13,"bounds":{"left":0.48242188,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Camera: FaceTime HD Camera","depth":13,"bounds":{"left":0.55546874,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Backgrounds and effects","depth":12,"bounds":{"left":0.6285156,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Backend Chapter","depth":11,"bounds":{"left":0.7046875,"top":0.39444444,"width":0.175,"height":0.025},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backend Chapter","depth":14,"bounds":{"left":0.74960935,"top":0.39375,"width":0.08515625,"height":0.025694445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov is in this call","depth":13,"bounds":{"left":0.7558594,"top":0.45277777,"width":0.07265625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Use Gemini to take notes Share notes and transcript","depth":11,"bounds":{"left":0.72929686,"top":0.47777778,"width":0.12578125,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use Gemini to take notes","depth":12,"bounds":{"left":0.75273436,"top":0.4875,"width":0.06328125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Share notes and transcript","depth":12,"bounds":{"left":0.75273436,"top":0.5013889,"width":0.05625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start","depth":12,"bounds":{"left":0.8191406,"top":0.4861111,"width":0.03125,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Start","depth":14,"bounds":{"left":0.82851565,"top":0.49305555,"width":0.0125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Join now","depth":12,"bounds":{"left":0.7453125,"top":0.53333336,"width":0.09375,"height":0.03888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Join now","depth":14,"bounds":{"left":0.78085935,"top":0.54583335,"width":0.02265625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Other ways to join","depth":12,"bounds":{"left":0.7558594,"top":0.59166664,"width":0.07265625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.","depth":12,"bounds":{"left":0.52070314,"top":0.75555557,"width":0.26328126,"height":0.035416666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":12,"bounds":{"left":0.6625,"top":0.77916664,"width":0.027734375,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":13,"bounds":{"left":0.6625,"top":0.77916664,"width":0.027734375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your camera is on. Your microphone is on.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Background is now replaced","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6010097635338979075
|
1101227023045744603
|
app_switch
|
accessibility
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
NULL
|
|
42716
|
910
|
61
|
2026-04-17T07:33:59.073977+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411239073_m1.jpg...
|
PhpStorm
|
faVsco.js – crm_configurations [EU]
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459
459
0
<null>
<null>...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"367","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"367","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"459","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"459","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"role_description":"text"}]...
|
2168190072860791120
|
-5903908238265193908
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459
459
0
<null>
<null>...
|
NULL
|
|
42722
|
910
|
65
|
2026-04-17T07:34:33.342993+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411273342_m1.jpg...
|
PhpStorm
|
faVsco.js – crm_configurations [EU]
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_selected":false,"is_expanded":false}]...
|
-5081751640215339021
|
-4009658842534132447
|
app_switch
|
hybrid
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
iTerm2ShellEditViewSessionScriptsProfilesWindowHelplahl• Backend Chapter • nowA100% <47ec2-user@ip-10-30-159-186;~-zshDOCKERO ₴1DEV (-zsh)batch_sync_deal:ids:617:allConfig ID:617Type: setMemory: 164 BTTL: 23h 45m 57sCount: 1Sample: 59265225365(PCS - 641)batch_sync_deal:ids:896:all(Mintago - 946)Config ID:896Type: setMemory:164BTTL: 23h 57m 3sCount: 1Sample: 21946600244batch_sync_deal:ids:925:all(Kickflip - 992)Config ID: 925Type: setMemory: 164 BTTL: 23h 56m 14sCount: 1Sample: 59230347602₴2APP (-zsh)883batch_sync_deal:ids:1060:all (Velatir - 1122)Config ID: 1060Type: setMemory: 164 BTTL: 23h 46m 15sCount: 1Sample: 59226455909root@41967d23a8da:/home/jiminny# php artisan crm:hubspot-webhook redis--key-type ids --detailed-T 459INFOScanning Redis keys (type: ids).-zsh®• ₴5* Review screenpipe u...•₴68•Fri 17 Apr 10:34:32181ec2-user@ip-10-30-159-...*7Total keys foundIl Memory OverviewTotal Memoryroot@41967d23a8da:/home/jiminny# php artisan crm:hubspot-webhook metrics0 B...
|
NULL
|
|
42723
|
911
|
56
|
2026-04-17T07:34:33.364081+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411273364_m2.jpg...
|
PhpStorm
|
faVsco.js – crm_configurations [EU]
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFditViewNavigateCodelaraveRefactonTool PhpStormFileFditViewNavigateCodelaraveRefactonToolsWindowHelpFV ravsco.is#11894 on.lY-18909-automated-renorts-ask-liminnvProject v• dependency-checker.isonU dev.ison=ids.txt=infection.ison.distM+ INSTALL.mdM+ INTERNAL_WEBHOOK SETUPEjiminny_storageM1 licenses.moMI Makerileu package-lock.jsonE phostan.neon.distE phostan-baseline.neon<> phpunit.xmlle raw sal query.salM+ README.mdợ sonar-project.properties= test.py‹> Untitled Diagram.xmlus vetur.config.jsM.WEBHOOK FILIERING IMPUE> rh External Librariesv = Scratches and Consolesv M Database ConsolesV AEU& console EUl4 DEAL RISKS EUIA DI EUIA EU [EU]vd iminny@localhostd console liminny@localfd Di Liminny@localnost]4 HS_local [jiminny@locald sr yiminny@localhost)V APRODe zono_dev yiminny@loce4 console [PRODIL console 1 PRODIA DI PRODI> LQA› L QAi> L QAI PRODV & STAGNG& console S AGINGI¿ consoe AGINGI& uranus s AGINGIM Extensions• M Scratches= phostorm shortcuts.txt=scratch.txtUr scratch 1.isonU scratch_2.sonU scratch_3.sorE scratch 4.txtphp scratch_5.phpphy scratch 6.phpir scratch_7.jsonIr stage2.ison= test</test.htmlC AutomatedReportsService.phpC) SendReportJob.phpC SendReportMailJob.php(©) ReportController.phplokenbullder.onoC TeamSetupController.phppnp apl.ono1 Filesystem.pnpC AutomatedReportsCommand.pnp© AsKJiminnyReportsController.phpC AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.phpC Team.php(C AutomatedReportsRepository.php© CreateHeldActivityEvent.php©) TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.php© UserPilotActivityListener.phpActivityLoagea.onpAutomatedRenortscallbackService.ono© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php x(C AutomatedReportResult.php(C AutomatedReport.phpclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUniqueB2AY1761931Y41721Y0199209210211212213447200259260261262263private function createResultso// handle multiple media types// create PDF as primary resultsth1s->reportResult = sreportservice->createReportResultautomatedReport: sautomatedReport,data: l"media_type" => Automatedkeporusservice:.MEULA_lYPE_PUr,if Gin arravo needle: AutomatedReportsService::MEDTA TYPE PODCAST. SmediaTvpes..strict: true))sthis->reportResultPodcast = SreportService->createReportResultautomatedReport: $automatedReport.data:'medla_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST.'parent_1d => Sthis->reportResult->getido,usaoeorivate Tunccion checkaccivicylount rroonecullent soropnecullent, array soayloaa,LoccerintertaceLusagesprivate function failReport(int $reason): void1f (1sset(sthis->reportResult)) isthis->reportresult->update(L"suacus = AucomatedkeporckesULt:.SIATUS_FALLEU."reason" = sreason,if isset(sthis->reportResultPodcast ‹sthis->reportResultPodcast->updated'status' => AutomatedReportResult::STATUS_ FATLED.'reason' => sreason,J9H= custom.log= laravel.loge SF (iminny@localhostU scratch_1.isonV connect.vueV Onboard.vueHs local liminnyalocalnost< console LUi(iii crm configurations [EU] X¿ console IPRODIe console [STAGINGrow vX:Auto vDDLY- WHERE id = 367E- ORDER BY367Iuuid UUID with time-low and time-high swapped) ÷fa0cf643-d30e-43b8-ab3d-1fe1825460oe team_1dLonotifiable_user_idproviderI• editionW instance!_ is_sandboxI versionD installed_app_version•_ sync_metadatasync objectsauto svnc activity0 crm_provider_idW crm_base_uru• last synced atI leads svnced atMaccounts sunced atШ contacts_synced_atopportunities synced_atIn contact roles synced atw over_quota_atW ap1_disabled_atsettings! opportunity_assignment_rule! opportunity_max_value•_ opportunity_max_ageILo opportunity value field id! trigger_assignment_ruleso_ score_transcripu•_ softphone_override_prospect• default currencyIn created atW updacea_au459<null>hubspotSULL<nul<hULl3364459Cascade & 7lsensat..co2026-04-17 07:14:23ShULL<hU LE<nili><null>SnULl<hU LE<null>"opportunity sync_ period":"om","oopen-recently-upaaced6958000.0037K191ShULLe2025-04-02 11:33:462026-04-17 07:14-23lobl" Backend Chanter . nowA100%4• Fri 17 Apr 10:34:32AutomatedRenortsCommandTestCascadeAutomated Report Retshow me exactyl where do we set result as sent or failedThere are 3 places total:searcheastatus. FAILED and perormedl other queryFocusina onlv on AutomatedReportResult status transitions.STATUS SENT - set in SendReportMailJob after the email is delivered:M SendReportMailJob.php:135-14g1t srenort-sstatus le= AutomaredRenortResult.STATIS SENIT*cache:: lock("report-status-i$this->reportUuid,, 5)->block(2, function () use (Sreport) ‹prevort-ruvualerl'status' = AutomatedReportResult::STATUS SENT,"sent_at = nowl),STATUS_FAILED - set in 3 places:1. SendReportJob::failed() - when the dispatch/pre-send phase tails terminally (null path, Semissing, etc.):nort.00.nhn:175-17eCommand 98-únction failed (Throwable Sexception): voidAutomatedReportResult::whereRaw('uuid = uuid to bin(?)', [$this→>reportUuidl)→updatell status → AutomatedneporcResuLCi.SlAlUSFALLeOIe2. RequestGenerateReportJob - when report generation fails (before it even reaches sending):• RequestGenerateReportJob.php:252-264$this->reportResult->update(["status = Automatedkeporckesult::sIAlUs_FALLED,'reason" = $reason,J9HRequestcenerateaskaminnvkevorto —same, Tor ASk Jiminny vartant• RequestGenerateAskJiminnyReportJob.php:203-207sunus-> reportresursuodarel'status' = AutomatedReportResult::STATUS_FATLED,'reason" = $reason,J9HWnal "1 file +16>Ask anything (&+L)+ <> Code Claude Sonnet 4.6Reject allAccept allWinasun leams...
|
NULL
|
-6184617858191095513
|
NULL
|
app_switch
|
ocr
|
NULL
|
PhpStormFileFditViewNavigateCodelaraveRefactonTool PhpStormFileFditViewNavigateCodelaraveRefactonToolsWindowHelpFV ravsco.is#11894 on.lY-18909-automated-renorts-ask-liminnvProject v• dependency-checker.isonU dev.ison=ids.txt=infection.ison.distM+ INSTALL.mdM+ INTERNAL_WEBHOOK SETUPEjiminny_storageM1 licenses.moMI Makerileu package-lock.jsonE phostan.neon.distE phostan-baseline.neon<> phpunit.xmlle raw sal query.salM+ README.mdợ sonar-project.properties= test.py‹> Untitled Diagram.xmlus vetur.config.jsM.WEBHOOK FILIERING IMPUE> rh External Librariesv = Scratches and Consolesv M Database ConsolesV AEU& console EUl4 DEAL RISKS EUIA DI EUIA EU [EU]vd iminny@localhostd console liminny@localfd Di Liminny@localnost]4 HS_local [jiminny@locald sr yiminny@localhost)V APRODe zono_dev yiminny@loce4 console [PRODIL console 1 PRODIA DI PRODI> LQA› L QAi> L QAI PRODV & STAGNG& console S AGINGI¿ consoe AGINGI& uranus s AGINGIM Extensions• M Scratches= phostorm shortcuts.txt=scratch.txtUr scratch 1.isonU scratch_2.sonU scratch_3.sorE scratch 4.txtphp scratch_5.phpphy scratch 6.phpir scratch_7.jsonIr stage2.ison= test</test.htmlC AutomatedReportsService.phpC) SendReportJob.phpC SendReportMailJob.php(©) ReportController.phplokenbullder.onoC TeamSetupController.phppnp apl.ono1 Filesystem.pnpC AutomatedReportsCommand.pnp© AsKJiminnyReportsController.phpC AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.phpC Team.php(C AutomatedReportsRepository.php© CreateHeldActivityEvent.php©) TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.php© UserPilotActivityListener.phpActivityLoagea.onpAutomatedRenortscallbackService.ono© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php x(C AutomatedReportResult.php(C AutomatedReport.phpclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUniqueB2AY1761931Y41721Y0199209210211212213447200259260261262263private function createResultso// handle multiple media types// create PDF as primary resultsth1s->reportResult = sreportservice->createReportResultautomatedReport: sautomatedReport,data: l"media_type" => Automatedkeporusservice:.MEULA_lYPE_PUr,if Gin arravo needle: AutomatedReportsService::MEDTA TYPE PODCAST. SmediaTvpes..strict: true))sthis->reportResultPodcast = SreportService->createReportResultautomatedReport: $automatedReport.data:'medla_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST.'parent_1d => Sthis->reportResult->getido,usaoeorivate Tunccion checkaccivicylount rroonecullent soropnecullent, array soayloaa,LoccerintertaceLusagesprivate function failReport(int $reason): void1f (1sset(sthis->reportResult)) isthis->reportresult->update(L"suacus = AucomatedkeporckesULt:.SIATUS_FALLEU."reason" = sreason,if isset(sthis->reportResultPodcast ‹sthis->reportResultPodcast->updated'status' => AutomatedReportResult::STATUS_ FATLED.'reason' => sreason,J9H= custom.log= laravel.loge SF (iminny@localhostU scratch_1.isonV connect.vueV Onboard.vueHs local liminnyalocalnost< console LUi(iii crm configurations [EU] X¿ console IPRODIe console [STAGINGrow vX:Auto vDDLY- WHERE id = 367E- ORDER BY367Iuuid UUID with time-low and time-high swapped) ÷fa0cf643-d30e-43b8-ab3d-1fe1825460oe team_1dLonotifiable_user_idproviderI• editionW instance!_ is_sandboxI versionD installed_app_version•_ sync_metadatasync objectsauto svnc activity0 crm_provider_idW crm_base_uru• last synced atI leads svnced atMaccounts sunced atШ contacts_synced_atopportunities synced_atIn contact roles synced atw over_quota_atW ap1_disabled_atsettings! opportunity_assignment_rule! opportunity_max_value•_ opportunity_max_ageILo opportunity value field id! trigger_assignment_ruleso_ score_transcripu•_ softphone_override_prospect• default currencyIn created atW updacea_au459<null>hubspotSULL<nul<hULl3364459Cascade & 7lsensat..co2026-04-17 07:14:23ShULL<hU LE<nili><null>SnULl<hU LE<null>"opportunity sync_ period":"om","oopen-recently-upaaced6958000.0037K191ShULLe2025-04-02 11:33:462026-04-17 07:14-23lobl" Backend Chanter . nowA100%4• Fri 17 Apr 10:34:32AutomatedRenortsCommandTestCascadeAutomated Report Retshow me exactyl where do we set result as sent or failedThere are 3 places total:searcheastatus. FAILED and perormedl other queryFocusina onlv on AutomatedReportResult status transitions.STATUS SENT - set in SendReportMailJob after the email is delivered:M SendReportMailJob.php:135-14g1t srenort-sstatus le= AutomaredRenortResult.STATIS SENIT*cache:: lock("report-status-i$this->reportUuid,, 5)->block(2, function () use (Sreport) ‹prevort-ruvualerl'status' = AutomatedReportResult::STATUS SENT,"sent_at = nowl),STATUS_FAILED - set in 3 places:1. SendReportJob::failed() - when the dispatch/pre-send phase tails terminally (null path, Semissing, etc.):nort.00.nhn:175-17eCommand 98-únction failed (Throwable Sexception): voidAutomatedReportResult::whereRaw('uuid = uuid to bin(?)', [$this→>reportUuidl)→updatell status → AutomatedneporcResuLCi.SlAlUSFALLeOIe2. RequestGenerateReportJob - when report generation fails (before it even reaches sending):• RequestGenerateReportJob.php:252-264$this->reportResult->update(["status = Automatedkeporckesult::sIAlUs_FALLED,'reason" = $reason,J9HRequestcenerateaskaminnvkevorto —same, Tor ASk Jiminny vartant• RequestGenerateAskJiminnyReportJob.php:203-207sunus-> reportresursuodarel'status' = AutomatedReportResult::STATUS_FATLED,'reason" = $reason,J9HWnal "1 file +16>Ask anything (&+L)+ <> Code Claude Sonnet 4.6Reject allAccept allWinasun leams...
|
NULL
|
|
42730
|
910
|
69
|
2026-04-17T07:34:45.918184+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411285918_m1.jpg...
|
Firefox
|
Meet - Backend Chapter — Work
|
True
|
meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovali meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.com...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Backend Chapter","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Return to home screen","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Switch account","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Switch account","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More options","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Turn off camera","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Turn on background blur","depth":13,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Microphone: soundcore AeroClip","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Speaker: System Default Speaker Device","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Camera: FaceTime HD Camera","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Backgrounds and effects","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Backend Chapter","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backend Chapter","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov is in this call","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Use Gemini to take notes Share notes and transcript","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use Gemini to take notes","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Share notes and transcript","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Start","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Join now","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Join now","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Other ways to join","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your camera is on. Your microphone is on.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Background is now replaced","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6010097635338979075
|
1101227023045744603
|
app_switch
|
accessibility
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
NULL
|
|
42731
|
911
|
60
|
2026-04-17T07:34:45.918217+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411285918_m2.jpg...
|
Firefox
|
Meet - Backend Chapter — Work
|
True
|
meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovali meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.com...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Backend Chapter","depth":4,"bounds":{"left":0.35351562,"top":0.23819445,"width":0.019140625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.35429686,"top":0.23819445,"width":0.005859375,"height":0.010416667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.35664064,"top":0.26805556,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.35351562,"top":0.69166666,"width":0.019140625,"height":0.027083334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.35351562,"top":0.71875,"width":0.019140625,"height":0.024305556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.35351562,"top":0.7430556,"width":0.019140625,"height":0.023611112},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.35351562,"top":0.76666665,"width":0.019140625,"height":0.024305556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.35351562,"top":0.79097223,"width":0.019140625,"height":0.027083334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Return to home screen","depth":10,"bounds":{"left":0.37890625,"top":0.24930556,"width":0.041015625,"height":0.027777778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.8257812,"top":0.25069445,"width":0.065625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Switch account","depth":11,"bounds":{"left":0.85664064,"top":0.26180556,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Switch account","depth":12,"bounds":{"left":0.85664064,"top":0.26180556,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":14,"bounds":{"left":0.415625,"top":0.36875,"width":0.03515625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More options","depth":13,"bounds":{"left":0.67578125,"top":0.35833332,"width":0.01875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":14,"bounds":{"left":0.51484376,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Turn off camera","depth":14,"bounds":{"left":0.54296875,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Turn on background blur","depth":13,"bounds":{"left":0.57109374,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Microphone: soundcore AeroClip","depth":13,"bounds":{"left":0.409375,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Speaker: System Default Speaker Device","depth":13,"bounds":{"left":0.48242188,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Camera: FaceTime HD Camera","depth":13,"bounds":{"left":0.55546874,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Backgrounds and effects","depth":12,"bounds":{"left":0.6285156,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Backend Chapter","depth":11,"bounds":{"left":0.7046875,"top":0.39444444,"width":0.175,"height":0.025},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backend Chapter","depth":14,"bounds":{"left":0.74960935,"top":0.39375,"width":0.08515625,"height":0.025694445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov is in this call","depth":13,"bounds":{"left":0.7558594,"top":0.45277777,"width":0.07265625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Use Gemini to take notes Share notes and transcript","depth":11,"bounds":{"left":0.72929686,"top":0.47777778,"width":0.12578125,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use Gemini to take notes","depth":12,"bounds":{"left":0.75273436,"top":0.4875,"width":0.06328125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Share notes and transcript","depth":12,"bounds":{"left":0.75273436,"top":0.5013889,"width":0.05625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start","depth":12,"bounds":{"left":0.8191406,"top":0.4861111,"width":0.03125,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Start","depth":14,"bounds":{"left":0.82851565,"top":0.49305555,"width":0.0125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Join now","depth":12,"bounds":{"left":0.7453125,"top":0.53333336,"width":0.09375,"height":0.03888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Join now","depth":14,"bounds":{"left":0.78085935,"top":0.54583335,"width":0.02265625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Other ways to join","depth":12,"bounds":{"left":0.7558594,"top":0.59166664,"width":0.07265625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.","depth":12,"bounds":{"left":0.52070314,"top":0.75555557,"width":0.26328126,"height":0.035416666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":12,"bounds":{"left":0.6625,"top":0.77916664,"width":0.027734375,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":13,"bounds":{"left":0.6625,"top":0.77916664,"width":0.027734375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your camera is on. Your microphone is on.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Background is now replaced","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6010097635338979075
|
1101227023045744603
|
app_switch
|
accessibility
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
NULL
|
|
42733
|
911
|
61
|
2026-04-17T07:34:47.246509+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411287246_m2.jpg...
|
PhpStorm
|
faVsco.js – crm_configurations [EU]
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459
459
0
<null>
<null>
0
hubspot
hubspot
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
0
0
0
2
2
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
1
1
0
1
1
0
1
1
0
3364459
3364459
2026-04-17 07:14:23
sensat.co
sensat.co
2026-04-17 07:14:23
2026-04-17 07:14:23
2026-04-17 07:14:23
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.03046875,"top":0.017361112,"width":0.0453125,"height":0.022222223},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.14960937,"height":0.022222223},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.78515625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.803125,"top":0.017361112,"width":0.09765625,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9007813,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9140625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9273437,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96015626,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9734375,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9867188,"top":0.017361112,"width":0.013281226,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.049609374,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.4265625,"top":0.19513889,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.43789062,"top":0.19375,"width":0.00859375,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.4464844,"top":0.19375,"width":0.008203125,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"367","depth":6,"bounds":{"left":0.62226564,"top":0.16527778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"367","depth":7,"bounds":{"left":0.62226564,"top":0.16527778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":6,"bounds":{"left":0.62226564,"top":0.18402778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":7,"bounds":{"left":0.62226564,"top":0.18402778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"459","depth":6,"bounds":{"left":0.62226564,"top":0.20277777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"459","depth":7,"bounds":{"left":0.62226564,"top":0.20277777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.22152779,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.22152779,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"hubspot","depth":6,"bounds":{"left":0.62226564,"top":0.24027778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"hubspot","depth":7,"bounds":{"left":0.62226564,"top":0.24027778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.25902778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.25902778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.2777778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.2777778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"bounds":{"left":0.62226564,"top":0.29652777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"bounds":{"left":0.62226564,"top":0.29652777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.62226564,"top":0.31527779,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.62226564,"top":0.31527779,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.33402777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.33402777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1","depth":6,"bounds":{"left":0.62226564,"top":0.35277778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"1","depth":7,"bounds":{"left":0.62226564,"top":0.35277778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1","depth":6,"bounds":{"left":0.62226564,"top":0.3715278,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"1","depth":7,"bounds":{"left":0.62226564,"top":0.3715278,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1","depth":6,"bounds":{"left":0.62226564,"top":0.39027777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"1","depth":7,"bounds":{"left":0.62226564,"top":0.39027777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"3364459","depth":6,"bounds":{"left":0.62226564,"top":0.40902779,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"3364459","depth":7,"bounds":{"left":0.62226564,"top":0.40902779,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"sensat.co","depth":6,"bounds":{"left":0.62226564,"top":0.42777777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"sensat.co","depth":7,"bounds":{"left":0.62226564,"top":0.42777777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-04-17 07:14:23","depth":6,"bounds":{"left":0.62226564,"top":0.44652778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"2026-04-17 07:14:23","depth":7,"bounds":{"left":0.62226564,"top":0.44652778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.4652778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.4652778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3258802044959833463
|
-6048023426475267506
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459
459
0
<null>
<null>
0
hubspot
hubspot
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
0
0
0
2
2
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
1
1
0
1
1
0
1
1
0
3364459
3364459
2026-04-17 07:14:23
sensat.co
sensat.co
2026-04-17 07:14:23
2026-04-17 07:14:23
2026-04-17 07:14:23
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23...
|
NULL
|
|
42734
|
910
|
71
|
2026-04-17T07:34:49.228068+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411289228_m1.jpg...
|
Firefox
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelplahl• Backend Chapter • now100% <47ec2-user@ip-10-30-159-186;~-zsh*4DOCKERO ₴1DEV (-zsh)₴2deal:542 webhooks4 association_change: 90 events,0 propertiesA property_change: 422 events,8 properties& creation: 30 events, 0 propertiescontact: 390 webhooksassociation_change: 106 events, l propertiesproperty_change: 246 events,8 propertiescreation: 38 events, 0 propertiesAPP (-zsh)883Config 64 (SalaryFinance - 70) - 2 webhookscompany: 2 webhooks4 property_change: 2 events, 2 propertiesConfig 150 (Nudge Global Limited - 168) - 20 webhookscontact: 20 webhooksA property_change: 20events, 1 propertiesConfig 945 (Shinydocs - 1019) - 12 webhooksdeal: 12 webhooks4 property_change: 12 events, 2 propertiesConfig 265 (Orbital - 283) - 155 webhookscontact: 50 webhooks4 creation: 1 events, 0 properties@ property_change: 47events, 8 propertiesassociation_change: 2 events, propertiescompany: 14 webhooksA property_change: 12 events, 1 properties& association_change: 2 events, 0 propertiesdeal: 91 webhooksA property_change: 91 events, 6 propertiesConfig 884 (Eulerity - 935) - 3 webhookscompany: 3 webhooks@ property_change: 3 events, 3 propertiesConfig 1051 (IndySoft - 1115) - 1 webhookscontact: 1 webhooks& property_change: 1 events, 1 propertiesConfig 734 (Codelink - 742) - 2 webhookscontact: 2 webhooks@ property_change: 2 events, 2 propertiesroot@41967d23a8da:/home/jiminny# php artisan crm:hubspot-webhook metrics -T l-zsh®• ₴5* Review screenpipe U...•₴68 • Fri 17 Apr 10:34:48181ec2-user@ip-10-30-159-...*7...
|
NULL
|
-963879896007845022
|
NULL
|
app_switch
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelplahl• Backend Chapter • now100% <47ec2-user@ip-10-30-159-186;~-zsh*4DOCKERO ₴1DEV (-zsh)₴2deal:542 webhooks4 association_change: 90 events,0 propertiesA property_change: 422 events,8 properties& creation: 30 events, 0 propertiescontact: 390 webhooksassociation_change: 106 events, l propertiesproperty_change: 246 events,8 propertiescreation: 38 events, 0 propertiesAPP (-zsh)883Config 64 (SalaryFinance - 70) - 2 webhookscompany: 2 webhooks4 property_change: 2 events, 2 propertiesConfig 150 (Nudge Global Limited - 168) - 20 webhookscontact: 20 webhooksA property_change: 20events, 1 propertiesConfig 945 (Shinydocs - 1019) - 12 webhooksdeal: 12 webhooks4 property_change: 12 events, 2 propertiesConfig 265 (Orbital - 283) - 155 webhookscontact: 50 webhooks4 creation: 1 events, 0 properties@ property_change: 47events, 8 propertiesassociation_change: 2 events, propertiescompany: 14 webhooksA property_change: 12 events, 1 properties& association_change: 2 events, 0 propertiesdeal: 91 webhooksA property_change: 91 events, 6 propertiesConfig 884 (Eulerity - 935) - 3 webhookscompany: 3 webhooks@ property_change: 3 events, 3 propertiesConfig 1051 (IndySoft - 1115) - 1 webhookscontact: 1 webhooks& property_change: 1 events, 1 propertiesConfig 734 (Codelink - 742) - 2 webhookscontact: 2 webhooks@ property_change: 2 events, 2 propertiesroot@41967d23a8da:/home/jiminny# php artisan crm:hubspot-webhook metrics -T l-zsh®• ₴5* Review screenpipe U...•₴68 • Fri 17 Apr 10:34:48181ec2-user@ip-10-30-159-...*7...
|
NULL
|
|
42736
|
911
|
62
|
2026-04-17T07:34:49.199316+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411289199_m2.jpg...
|
Firefox
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFditViewNavigateCodelaravePetactorTool PhpStormFileFditViewNavigateCodelaravePetactorToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny kProject v• dependency-checker.isonU dev.ison=ids.txt=infection.ison.distM+ INSTALL.mdM+ INTERNAL_WEBHOOK SETUPEjiminny_storageM1 licenses.moMI Makerileu package-lock.jsonE phostan.neon.distE phostan-baseline.neon<> phpunit.xmlle raw sal query.salM+ README.mdợ sonar-project.properties= test.py‹> Untitled Diagram.xmlus vetur.config.jsM.WEBHOOK FILIERING IMPUE> rh External Librariesv = Scratches and Consolesv M Database ConsolesV AEU& console EUl4 DEAL RISKS EUIA DI EUIA EU [EU]vd iminny@localhostd console liminny@localfc Dl Liminny@localhost]4 HS_local [jiminny@locald sr yiminny@localhost)V APRODe zono_dev yiminny@loce4 console [PRODIL console 1 PRODIA DI PRODI> LQA› L QAi> L QAI PRODV & STAGING& console S AGINGI¿ consoe AGINGI& uranus s AGINGI> M Extensionsv M Scratches= phostorm shortcuts.txt=scratch.txtUr scratch 1.isonU scratch_2.sonU scratch_3.sorE scratch 4.txtphp scratch_5.phpphy scratch 6.phpir scratch_7.jsonIr stage2.ison= test</test.html(C AutomatedReportsService.phpC) SendReportJob.phpC SendReportMailJob.php(©) ReportController.phpTokenBuilder.phpC TeamSetupController.phppnp apl.ono1 Filesystem.pnpC AutomatedReportsCommand.pnp© AsKJiminnyReportsController.phpC AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.phpC Team.php(C AutomatedReportsRepository.php© CreateHeldActivityEvent.php©) TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.php© UserPilotActivityListener.php© ActivityLogged.phpAutomatedRenortscallbackService.ono© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php X(C AutomatedReportResult.php(C AutomatedReport.phpclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUniqueB2AY1761931Y41721Y0199209210211212213447259260261262263private function createResultso// handle multiple media types// create PDF as primary resultsth1s->reportResult = sreportservice->createReportResultautomatedReport: sautomatedReport,data: l"media_type" => Automatedkeporusservice:.MEULA_lYPE_PUr,if ain arravo needle: AutomatedReportsService::MEDTA TYPE PODCAST. SmediaTvoes.strict: true))sthis->reportResultPodcast = SreportService->createReportResultautomatedReport: $automatedReport.data:'medla_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,'parent_1d => Sthis->reportResult-›getido,usaoeorivate Tunccion checkaccivicylount rroonecullent soropnecullent, array soayloaa,LoccerintertaceLusacesprivate function failReport(int $reason): void1f (1sset(sthis->reportResult)) isthis->reportresult->update(L"suacus = AucomatedkeporckesULt:.SIATUS_FALLEU."reason" = sreason,if isset(sthis->reportResultPodcast ‹sthis->reportResultPodcast->updated'status' => AutomatedReportResult::STATUS_ FATLED.'reason' => sreason,J9HHelper code will nelp IDt lo understand vour Laravel apo code. Generale Don't snow Anymore loday 8.09= custom.log= laravel.loge SF (iminny@localhostU scratch_1.isonV connect.vueV Onboard.vueHs local liminnyalocalnost< console LUiiii crm configurations [EU] X¿ console IPRODIe console [STAGINGrow vX:Auto vDDLY- WHERE id = 367E- ORDER BY367Iuuid UUID with time-low and time-high swapped) ÷fa0cf643-d30e-43b8-ab3d-1fe1825460oe team_1dLonotifiable_user_idproviderI• editionW instance!_ is_sandboxI versionD installed_app_version•_ sync_metadatasync objectsauto svnc activity0 crm_provider_idW crm_base_uru• last synced atI leads svnced atMaccounts sunced atШ contacts_synced_atopportunities synced_atIn contact roles synced atw over_quota_atW ap1_disabled_atsettings! opportunity_assignment_rule! opportunity_max_value•_ opportunity_max_ageILo opportunity value field id! trigger_assignment_ruleso_ score_transcripu•_ softphone_override_prospect• default currencyIn created atW updacea_au459<null>hubspotSULL<nul<hULl3364459Cascade & 7lsensat..co2026-04-17 07:14:23ShULL<hU LE<nuli><null>SnULl<hU LE<null>"opportunity sync_ period":"om","oopen-recently-upaaced6958000.0037K191ShULLe2025-04-02 11:33:462026-04-17 07:14-23lobl: Backend Chapter • now100% 1Z7• Fri 17 Apr 10:34:48AutomatedReportsCommandTest-CascadeAutomated Report Retishow me exactyl where do we set result as sent or failedThere are 3 places total:searcheastatus. FAILED and perormedl other queryFocusina onlv on AutomatedReportResult status transitions.STATUS SENT - set in SendReportMailJob after the email is delivered:M SendReportMailJob.php:135-14g1t srenort-sstatus le= AutomaredRenortResult.STATIS SENIT*cache:: lock("report-status-i$this->reportUuid,, 5)->block(2, function () use (Sreport) ‹prevort-ruvualerl'status' = AutomatedReportResult::STATUS SENT,"sent_at = nowl),STATUS_FAILED - set in 3 places:1. SendReportJob::failed() - when the dispatch/pre-send phase fails terminally (null path, Ssmissing, etc.:nort.00.nhn:175-17eCommand &-únction failed (Throwable Sexception): voidAutomatedReportResult::whereRaw('uuid = uuid to bin(?)'. [$this→>reportUuidl)→updatell status → AutomatedneporcResuLCi.SlAlUSFALLeOIe2. RequestGenerateReportJob - when report generation fails (before it even reaches sending):• RequestGenerateReportJob.php:252-264$this->reportResult->update(["status = Automatedkeporckesult::sIAlUs_FALLED,'reason" = $reason,J9HRequestcenerateaskaminnvkevorto —same, Tor ASk Jiminny vartant• RequestGenerateAskJiminnyReportJob.php:203-207sunus-> reportresursuodarel'status' = AutomatedReportResult::STATUS_FATLED,'reason" = $reason,J9HWnal "1 file +16)Ask anything (&+L)+ <> Code Claude Sonnet 4.6Reject allAccept allSUM: 1winasur leams...
|
NULL
|
3965698491456044094
|
NULL
|
app_switch
|
ocr
|
NULL
|
PhpStormFileFditViewNavigateCodelaravePetactorTool PhpStormFileFditViewNavigateCodelaravePetactorToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny kProject v• dependency-checker.isonU dev.ison=ids.txt=infection.ison.distM+ INSTALL.mdM+ INTERNAL_WEBHOOK SETUPEjiminny_storageM1 licenses.moMI Makerileu package-lock.jsonE phostan.neon.distE phostan-baseline.neon<> phpunit.xmlle raw sal query.salM+ README.mdợ sonar-project.properties= test.py‹> Untitled Diagram.xmlus vetur.config.jsM.WEBHOOK FILIERING IMPUE> rh External Librariesv = Scratches and Consolesv M Database ConsolesV AEU& console EUl4 DEAL RISKS EUIA DI EUIA EU [EU]vd iminny@localhostd console liminny@localfc Dl Liminny@localhost]4 HS_local [jiminny@locald sr yiminny@localhost)V APRODe zono_dev yiminny@loce4 console [PRODIL console 1 PRODIA DI PRODI> LQA› L QAi> L QAI PRODV & STAGING& console S AGINGI¿ consoe AGINGI& uranus s AGINGI> M Extensionsv M Scratches= phostorm shortcuts.txt=scratch.txtUr scratch 1.isonU scratch_2.sonU scratch_3.sorE scratch 4.txtphp scratch_5.phpphy scratch 6.phpir scratch_7.jsonIr stage2.ison= test</test.html(C AutomatedReportsService.phpC) SendReportJob.phpC SendReportMailJob.php(©) ReportController.phpTokenBuilder.phpC TeamSetupController.phppnp apl.ono1 Filesystem.pnpC AutomatedReportsCommand.pnp© AsKJiminnyReportsController.phpC AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.phpC Team.php(C AutomatedReportsRepository.php© CreateHeldActivityEvent.php©) TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.php© UserPilotActivityListener.php© ActivityLogged.phpAutomatedRenortscallbackService.ono© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php X(C AutomatedReportResult.php(C AutomatedReport.phpclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUniqueB2AY1761931Y41721Y0199209210211212213447259260261262263private function createResultso// handle multiple media types// create PDF as primary resultsth1s->reportResult = sreportservice->createReportResultautomatedReport: sautomatedReport,data: l"media_type" => Automatedkeporusservice:.MEULA_lYPE_PUr,if ain arravo needle: AutomatedReportsService::MEDTA TYPE PODCAST. SmediaTvoes.strict: true))sthis->reportResultPodcast = SreportService->createReportResultautomatedReport: $automatedReport.data:'medla_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,'parent_1d => Sthis->reportResult-›getido,usaoeorivate Tunccion checkaccivicylount rroonecullent soropnecullent, array soayloaa,LoccerintertaceLusacesprivate function failReport(int $reason): void1f (1sset(sthis->reportResult)) isthis->reportresult->update(L"suacus = AucomatedkeporckesULt:.SIATUS_FALLEU."reason" = sreason,if isset(sthis->reportResultPodcast ‹sthis->reportResultPodcast->updated'status' => AutomatedReportResult::STATUS_ FATLED.'reason' => sreason,J9HHelper code will nelp IDt lo understand vour Laravel apo code. Generale Don't snow Anymore loday 8.09= custom.log= laravel.loge SF (iminny@localhostU scratch_1.isonV connect.vueV Onboard.vueHs local liminnyalocalnost< console LUiiii crm configurations [EU] X¿ console IPRODIe console [STAGINGrow vX:Auto vDDLY- WHERE id = 367E- ORDER BY367Iuuid UUID with time-low and time-high swapped) ÷fa0cf643-d30e-43b8-ab3d-1fe1825460oe team_1dLonotifiable_user_idproviderI• editionW instance!_ is_sandboxI versionD installed_app_version•_ sync_metadatasync objectsauto svnc activity0 crm_provider_idW crm_base_uru• last synced atI leads svnced atMaccounts sunced atШ contacts_synced_atopportunities synced_atIn contact roles synced atw over_quota_atW ap1_disabled_atsettings! opportunity_assignment_rule! opportunity_max_value•_ opportunity_max_ageILo opportunity value field id! trigger_assignment_ruleso_ score_transcripu•_ softphone_override_prospect• default currencyIn created atW updacea_au459<null>hubspotSULL<nul<hULl3364459Cascade & 7lsensat..co2026-04-17 07:14:23ShULL<hU LE<nuli><null>SnULl<hU LE<null>"opportunity sync_ period":"om","oopen-recently-upaaced6958000.0037K191ShULLe2025-04-02 11:33:462026-04-17 07:14-23lobl: Backend Chapter • now100% 1Z7• Fri 17 Apr 10:34:48AutomatedReportsCommandTest-CascadeAutomated Report Retishow me exactyl where do we set result as sent or failedThere are 3 places total:searcheastatus. FAILED and perormedl other queryFocusina onlv on AutomatedReportResult status transitions.STATUS SENT - set in SendReportMailJob after the email is delivered:M SendReportMailJob.php:135-14g1t srenort-sstatus le= AutomaredRenortResult.STATIS SENIT*cache:: lock("report-status-i$this->reportUuid,, 5)->block(2, function () use (Sreport) ‹prevort-ruvualerl'status' = AutomatedReportResult::STATUS SENT,"sent_at = nowl),STATUS_FAILED - set in 3 places:1. SendReportJob::failed() - when the dispatch/pre-send phase fails terminally (null path, Ssmissing, etc.:nort.00.nhn:175-17eCommand &-únction failed (Throwable Sexception): voidAutomatedReportResult::whereRaw('uuid = uuid to bin(?)'. [$this→>reportUuidl)→updatell status → AutomatedneporcResuLCi.SlAlUSFALLeOIe2. RequestGenerateReportJob - when report generation fails (before it even reaches sending):• RequestGenerateReportJob.php:252-264$this->reportResult->update(["status = Automatedkeporckesult::sIAlUs_FALLED,'reason" = $reason,J9HRequestcenerateaskaminnvkevorto —same, Tor ASk Jiminny vartant• RequestGenerateAskJiminnyReportJob.php:203-207sunus-> reportresursuodarel'status' = AutomatedReportResult::STATUS_FATLED,'reason" = $reason,J9HWnal "1 file +16)Ask anything (&+L)+ <> Code Claude Sonnet 4.6Reject allAccept allSUM: 1winasur leams...
|
NULL
|
|
42766
|
912
|
11
|
2026-04-17T07:36:29.423735+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411389423_m1.jpg...
|
Firefox
|
Meet - Backend Chapter — Work
|
True
|
meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovali meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.com...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Backend Chapter","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Return to home screen","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Switch account","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Switch account","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More options","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Turn off camera","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Turn on background blur","depth":13,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Microphone: soundcore AeroClip","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Speaker: System Default Speaker Device","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Camera: FaceTime HD Camera","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Backgrounds and effects","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Backend Chapter","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backend Chapter","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov is in this call","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Use Gemini to take notes Share notes and transcript","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use Gemini to take notes","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Share notes and transcript","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Start","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Join now","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Join now","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Other ways to join","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your camera is on. Your microphone is on.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Background is now replaced","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6010097635338979075
|
1101227023045744603
|
app_switch
|
accessibility
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
NULL
|
|
42767
|
913
|
9
|
2026-04-17T07:36:29.432020+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411389432_m2.jpg...
|
Firefox
|
Meet - Backend Chapter — Work
|
True
|
meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovali meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.com...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Backend Chapter","depth":4,"bounds":{"left":0.35351562,"top":0.23819445,"width":0.019140625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.35429686,"top":0.23819445,"width":0.005859375,"height":0.010416667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.35664064,"top":0.26805556,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.35351562,"top":0.69166666,"width":0.019140625,"height":0.027083334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.35351562,"top":0.71875,"width":0.019140625,"height":0.024305556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.35351562,"top":0.7430556,"width":0.019140625,"height":0.023611112},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.35351562,"top":0.76666665,"width":0.019140625,"height":0.024305556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.35351562,"top":0.79097223,"width":0.019140625,"height":0.027083334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Return to home screen","depth":10,"bounds":{"left":0.37890625,"top":0.24930556,"width":0.041015625,"height":0.027777778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.8257812,"top":0.25069445,"width":0.065625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Switch account","depth":11,"bounds":{"left":0.85664064,"top":0.26180556,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Switch account","depth":12,"bounds":{"left":0.85664064,"top":0.26180556,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":14,"bounds":{"left":0.415625,"top":0.36875,"width":0.03515625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More options","depth":13,"bounds":{"left":0.67578125,"top":0.35833332,"width":0.01875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":14,"bounds":{"left":0.51484376,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Turn off camera","depth":14,"bounds":{"left":0.54296875,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Turn on background blur","depth":13,"bounds":{"left":0.57109374,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Microphone: soundcore AeroClip","depth":13,"bounds":{"left":0.409375,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Speaker: System Default Speaker Device","depth":13,"bounds":{"left":0.48242188,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Camera: FaceTime HD Camera","depth":13,"bounds":{"left":0.55546874,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Backgrounds and effects","depth":12,"bounds":{"left":0.6285156,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Backend Chapter","depth":11,"bounds":{"left":0.7046875,"top":0.39444444,"width":0.175,"height":0.025},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backend Chapter","depth":14,"bounds":{"left":0.74960935,"top":0.39375,"width":0.08515625,"height":0.025694445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov is in this call","depth":13,"bounds":{"left":0.7558594,"top":0.45277777,"width":0.07265625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Use Gemini to take notes Share notes and transcript","depth":11,"bounds":{"left":0.72929686,"top":0.47777778,"width":0.12578125,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use Gemini to take notes","depth":12,"bounds":{"left":0.75273436,"top":0.4875,"width":0.06328125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Share notes and transcript","depth":12,"bounds":{"left":0.75273436,"top":0.5013889,"width":0.05625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start","depth":12,"bounds":{"left":0.8191406,"top":0.4861111,"width":0.03125,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Start","depth":14,"bounds":{"left":0.82851565,"top":0.49305555,"width":0.0125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Join now","depth":12,"bounds":{"left":0.7453125,"top":0.53333336,"width":0.09375,"height":0.03888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Join now","depth":14,"bounds":{"left":0.78085935,"top":0.54583335,"width":0.02265625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Other ways to join","depth":12,"bounds":{"left":0.7558594,"top":0.59166664,"width":0.07265625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.","depth":12,"bounds":{"left":0.52070314,"top":0.75555557,"width":0.26328126,"height":0.035416666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":12,"bounds":{"left":0.6625,"top":0.77916664,"width":0.027734375,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":13,"bounds":{"left":0.6625,"top":0.77916664,"width":0.027734375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your camera is on. Your microphone is on.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Background is now replaced","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6010097635338979075
|
1101227023045744603
|
app_switch
|
accessibility
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
NULL
|
|
42770
|
912
|
13
|
2026-04-17T07:36:32.833139+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411392833_m1.jpg...
|
Firefox
|
Meet - Backend Chapter — Work
|
True
|
meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovali meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.com...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Backend Chapter","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Return to home screen","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Switch account","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Switch account","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More options","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Turn off camera","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Turn on background blur","depth":13,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Microphone: soundcore AeroClip","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Speaker: System Default Speaker Device","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Camera: FaceTime HD Camera","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Backgrounds and effects","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Backend Chapter","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backend Chapter","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov is in this call","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Use Gemini to take notes Share notes and transcript","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use Gemini to take notes","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Share notes and transcript","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Start","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Join now","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Join now","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Other ways to join","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your camera is on. Your microphone is on.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Background is now replaced","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6010097635338979075
|
1101227023045744603
|
app_switch
|
accessibility
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
NULL
|
|
42771
|
913
|
11
|
2026-04-17T07:36:32.856663+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411392856_m2.jpg...
|
Firefox
|
Meet - Backend Chapter — Work
|
True
|
meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovali meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.com...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Backend Chapter","depth":4,"bounds":{"left":0.35351562,"top":0.23819445,"width":0.019140625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.35429686,"top":0.23819445,"width":0.005859375,"height":0.010416667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.35664064,"top":0.26805556,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.35351562,"top":0.69166666,"width":0.019140625,"height":0.027083334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.35351562,"top":0.71875,"width":0.019140625,"height":0.024305556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.35351562,"top":0.7430556,"width":0.019140625,"height":0.023611112},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.35351562,"top":0.76666665,"width":0.019140625,"height":0.024305556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.35351562,"top":0.79097223,"width":0.019140625,"height":0.027083334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Return to home screen","depth":10,"bounds":{"left":0.37890625,"top":0.24930556,"width":0.041015625,"height":0.027777778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.8257812,"top":0.25069445,"width":0.065625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Switch account","depth":11,"bounds":{"left":0.85664064,"top":0.26180556,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Switch account","depth":12,"bounds":{"left":0.85664064,"top":0.26180556,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":14,"bounds":{"left":0.415625,"top":0.36875,"width":0.03515625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More options","depth":13,"bounds":{"left":0.67578125,"top":0.35833332,"width":0.01875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":14,"bounds":{"left":0.51484376,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Turn off camera","depth":14,"bounds":{"left":0.54296875,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Turn on background blur","depth":13,"bounds":{"left":0.57109374,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Microphone: soundcore AeroClip","depth":13,"bounds":{"left":0.409375,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Speaker: System Default Speaker Device","depth":13,"bounds":{"left":0.48242188,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Camera: FaceTime HD Camera","depth":13,"bounds":{"left":0.55546874,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Backgrounds and effects","depth":12,"bounds":{"left":0.6285156,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Backend Chapter","depth":11,"bounds":{"left":0.7046875,"top":0.39444444,"width":0.175,"height":0.025},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backend Chapter","depth":14,"bounds":{"left":0.74960935,"top":0.39375,"width":0.08515625,"height":0.025694445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov is in this call","depth":13,"bounds":{"left":0.7558594,"top":0.45277777,"width":0.07265625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Use Gemini to take notes Share notes and transcript","depth":11,"bounds":{"left":0.72929686,"top":0.47777778,"width":0.12578125,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use Gemini to take notes","depth":12,"bounds":{"left":0.75273436,"top":0.4875,"width":0.06328125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Share notes and transcript","depth":12,"bounds":{"left":0.75273436,"top":0.5013889,"width":0.05625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start","depth":12,"bounds":{"left":0.8191406,"top":0.4861111,"width":0.03125,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Start","depth":14,"bounds":{"left":0.82851565,"top":0.49305555,"width":0.0125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Join now","depth":12,"bounds":{"left":0.7453125,"top":0.53333336,"width":0.09375,"height":0.03888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Join now","depth":14,"bounds":{"left":0.78085935,"top":0.54583335,"width":0.02265625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Other ways to join","depth":12,"bounds":{"left":0.7558594,"top":0.59166664,"width":0.07265625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.","depth":12,"bounds":{"left":0.52070314,"top":0.75555557,"width":0.26328126,"height":0.035416666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":12,"bounds":{"left":0.6625,"top":0.77916664,"width":0.027734375,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":13,"bounds":{"left":0.6625,"top":0.77916664,"width":0.027734375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your camera is on. Your microphone is on.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Background is now replaced","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6010097635338979075
|
1101227023045744603
|
app_switch
|
accessibility
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
NULL
|
|
42780
|
912
|
18
|
2026-04-17T07:37:51.796668+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411471796_m1.jpg...
|
Firefox
|
Meet - Backend Chapter — Work
|
True
|
meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovali meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.com...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Backend Chapter","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Return to home screen","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Switch account","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Switch account","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More options","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Turn off camera","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Turn on background blur","depth":13,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Microphone: soundcore AeroClip","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Speaker: System Default Speaker Device","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Camera: FaceTime HD Camera","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Backgrounds and effects","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Backend Chapter","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backend Chapter","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov is in this call","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Use Gemini to take notes Share notes and transcript","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use Gemini to take notes","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Share notes and transcript","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Start","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Join now","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Join now","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Other ways to join","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your camera is on. Your microphone is on.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Background is now replaced","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6010097635338979075
|
1101227023045744603
|
app_switch
|
accessibility
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
NULL
|
|
42781
|
913
|
16
|
2026-04-17T07:37:51.796699+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411471796_m2.jpg...
|
Firefox
|
Meet - Backend Chapter — Work
|
True
|
meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovali meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.com...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Backend Chapter","depth":4,"bounds":{"left":0.35351562,"top":0.23819445,"width":0.019140625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.35429686,"top":0.23819445,"width":0.005859375,"height":0.010416667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.35664064,"top":0.26805556,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.35351562,"top":0.69166666,"width":0.019140625,"height":0.027083334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.35351562,"top":0.71875,"width":0.019140625,"height":0.024305556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.35351562,"top":0.7430556,"width":0.019140625,"height":0.023611112},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.35351562,"top":0.76666665,"width":0.019140625,"height":0.024305556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.35351562,"top":0.79097223,"width":0.019140625,"height":0.027083334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Return to home screen","depth":10,"bounds":{"left":0.37890625,"top":0.24930556,"width":0.041015625,"height":0.027777778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.8257812,"top":0.25069445,"width":0.065625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Switch account","depth":11,"bounds":{"left":0.85664064,"top":0.26180556,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Switch account","depth":12,"bounds":{"left":0.85664064,"top":0.26180556,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":14,"bounds":{"left":0.415625,"top":0.36875,"width":0.03515625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More options","depth":13,"bounds":{"left":0.67578125,"top":0.35833332,"width":0.01875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":14,"bounds":{"left":0.51484376,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Turn off camera","depth":14,"bounds":{"left":0.54296875,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Turn on background blur","depth":13,"bounds":{"left":0.57109374,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Microphone: soundcore AeroClip","depth":13,"bounds":{"left":0.409375,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Speaker: System Default Speaker Device","depth":13,"bounds":{"left":0.48242188,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Camera: FaceTime HD Camera","depth":13,"bounds":{"left":0.55546874,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Backgrounds and effects","depth":12,"bounds":{"left":0.6285156,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Backend Chapter","depth":11,"bounds":{"left":0.7046875,"top":0.39444444,"width":0.175,"height":0.025},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backend Chapter","depth":14,"bounds":{"left":0.74960935,"top":0.39375,"width":0.08515625,"height":0.025694445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov is in this call","depth":13,"bounds":{"left":0.7558594,"top":0.45277777,"width":0.07265625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Use Gemini to take notes Share notes and transcript","depth":11,"bounds":{"left":0.72929686,"top":0.47777778,"width":0.12578125,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use Gemini to take notes","depth":12,"bounds":{"left":0.75273436,"top":0.4875,"width":0.06328125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Share notes and transcript","depth":12,"bounds":{"left":0.75273436,"top":0.5013889,"width":0.05625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start","depth":12,"bounds":{"left":0.8191406,"top":0.4861111,"width":0.03125,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Start","depth":14,"bounds":{"left":0.82851565,"top":0.49305555,"width":0.0125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Join now","depth":12,"bounds":{"left":0.7453125,"top":0.53333336,"width":0.09375,"height":0.03888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Join now","depth":14,"bounds":{"left":0.78085935,"top":0.54583335,"width":0.02265625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Other ways to join","depth":12,"bounds":{"left":0.7558594,"top":0.59166664,"width":0.07265625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.","depth":12,"bounds":{"left":0.52070314,"top":0.75555557,"width":0.26328126,"height":0.035416666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":12,"bounds":{"left":0.6625,"top":0.77916664,"width":0.027734375,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":13,"bounds":{"left":0.6625,"top":0.77916664,"width":0.027734375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your camera is on. Your microphone is on.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Background is now replaced","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6010097635338979075
|
1101227023045744603
|
app_switch
|
accessibility
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
NULL
|
|
42784
|
912
|
20
|
2026-04-17T07:37:55.469640+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411475469_m1.jpg...
|
Firefox
|
Meet - Backend Chapter — Work
|
True
|
meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovali meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.com...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Backend Chapter","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Return to home screen","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Switch account","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Switch account","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More options","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Turn off camera","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Turn on background blur","depth":13,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Microphone: soundcore AeroClip","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Speaker: System Default Speaker Device","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Camera: FaceTime HD Camera","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Backgrounds and effects","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Backend Chapter","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backend Chapter","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov is in this call","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Use Gemini to take notes Share notes and transcript","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use Gemini to take notes","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Share notes and transcript","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Start","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Join now","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Join now","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Other ways to join","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your camera is on. Your microphone is on.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Background is now replaced","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6010097635338979075
|
1101227023045744603
|
app_switch
|
accessibility
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
NULL
|
|
42785
|
913
|
18
|
2026-04-17T07:37:55.471984+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411475471_m2.jpg...
|
Firefox
|
Meet - Backend Chapter — Work
|
True
|
meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovali meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.com...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Backend Chapter","depth":4,"bounds":{"left":0.35351562,"top":0.23819445,"width":0.019140625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.35429686,"top":0.23819445,"width":0.005859375,"height":0.010416667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.35664064,"top":0.26805556,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.35351562,"top":0.69166666,"width":0.019140625,"height":0.027083334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.35351562,"top":0.71875,"width":0.019140625,"height":0.024305556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.35351562,"top":0.7430556,"width":0.019140625,"height":0.023611112},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.35351562,"top":0.76666665,"width":0.019140625,"height":0.024305556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.35351562,"top":0.79097223,"width":0.019140625,"height":0.027083334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Return to home screen","depth":10,"bounds":{"left":0.37890625,"top":0.24930556,"width":0.041015625,"height":0.027777778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.8257812,"top":0.25069445,"width":0.065625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Switch account","depth":11,"bounds":{"left":0.85664064,"top":0.26180556,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Switch account","depth":12,"bounds":{"left":0.85664064,"top":0.26180556,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":14,"bounds":{"left":0.415625,"top":0.36875,"width":0.03515625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More options","depth":13,"bounds":{"left":0.67578125,"top":0.35833332,"width":0.01875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":14,"bounds":{"left":0.51484376,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Turn off camera","depth":14,"bounds":{"left":0.54296875,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Turn on background blur","depth":13,"bounds":{"left":0.57109374,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Microphone: soundcore AeroClip","depth":13,"bounds":{"left":0.409375,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Speaker: System Default Speaker Device","depth":13,"bounds":{"left":0.48242188,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Camera: FaceTime HD Camera","depth":13,"bounds":{"left":0.55546874,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Backgrounds and effects","depth":12,"bounds":{"left":0.6285156,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Backend Chapter","depth":11,"bounds":{"left":0.7046875,"top":0.39444444,"width":0.175,"height":0.025},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backend Chapter","depth":14,"bounds":{"left":0.74960935,"top":0.39375,"width":0.08515625,"height":0.025694445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov is in this call","depth":13,"bounds":{"left":0.7558594,"top":0.45277777,"width":0.07265625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Use Gemini to take notes Share notes and transcript","depth":11,"bounds":{"left":0.72929686,"top":0.47777778,"width":0.12578125,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use Gemini to take notes","depth":12,"bounds":{"left":0.75273436,"top":0.4875,"width":0.06328125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Share notes and transcript","depth":12,"bounds":{"left":0.75273436,"top":0.5013889,"width":0.05625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start","depth":12,"bounds":{"left":0.8191406,"top":0.4861111,"width":0.03125,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Start","depth":14,"bounds":{"left":0.82851565,"top":0.49305555,"width":0.0125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Join now","depth":12,"bounds":{"left":0.7453125,"top":0.53333336,"width":0.09375,"height":0.03888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Join now","depth":14,"bounds":{"left":0.78085935,"top":0.54583335,"width":0.02265625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Other ways to join","depth":12,"bounds":{"left":0.7558594,"top":0.59166664,"width":0.07265625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.","depth":12,"bounds":{"left":0.52070314,"top":0.75555557,"width":0.26328126,"height":0.035416666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":12,"bounds":{"left":0.6625,"top":0.77916664,"width":0.027734375,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":13,"bounds":{"left":0.6625,"top":0.77916664,"width":0.027734375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your camera is on. Your microphone is on.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Background is now replaced","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6010097635338979075
|
1101227023045744603
|
app_switch
|
accessibility
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
NULL
|
|
42787
|
912
|
21
|
2026-04-17T07:38:05.996899+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411485996_m1.jpg...
|
PhpStorm
|
faVsco.js – crm_configurations [EU]
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
4434561267597224148
|
-7988188602108755006
|
app_switch
|
hybrid
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
iTerm2ShellEdit|ViewSessionScriptsProfilesWindowHelplaln)Backend Chapter • now100% C47 8• Fri 17 Apr 10:38:05ec2-user@ip-10-20-6-111:~X41₴81DOCKER• ₴1DEV (-zsh)882APP (-zsh)|X3-zsh•95* Review screenp...• X6ec2-user@ip-10-30-...X7Days Active: 3/3Daily Average: 265.33root@67e84f80b9d1:/home/jiminny# php artisan crm:hubspot-webhook metrics -T 459 --from 2026-04-15 -DINFOManaging webhookmetrics for date range.Date RangeConfig IDIll Range SummaryDate RangeTotal DaysOldest Data AgeTotal WebhooksDaily AverageActive Companiesiz Daily Breakdown2026-04-15:335,647 webhooks, 88 companies active2026-04-16: 671,679 webhooks, 88 companies active2026-04-17: 58,351 webhooks, 68 companies active| Company Details2026-04-15 to2026-04-173672026-04-15 to 2026-04-1732.0 days ago1,065,677355,225.6789Company 367 (Sensat - 459)Total Webhooks: 796Days Active: 3/3Daily Average: 265.33company (114 total, avg: 38)association_change: 92 total, avg: 46, active: 2 dayscreation: 3 total, avg: 1.5, active: 2 daysproperty_change: 19 total, avg: 9.5, active: 2 daysUnique properties: 4Top properties: hubspot_owner_id(12), domain(3), name(3), phone(1)deal (164 total, avg: 54.67)property_change: 164 total, avg: 54.67, active: 3 daysUnique properties: 8Top properties: notes_last_updated(134), closedate(7), dealstage(5), hs_deal_stage_probabilihy(5), hs_manual_forecast_category(5)contact (518 total, avg: 172.67)property_change:390 total, avg: 130, active: 3 daysUnique properties: 9Top properties: hubspot_owner_id(186), firstname(35), email(35),associatedcompanyid(33), country(33)creation: 36 total, avg: 18, active: 2 daysassociation_change: 92 total, avg: 46, active: 2 daysroote67e84f80b9d1:/home/jiminny# |ec2-user@ip-10-20-......
|
NULL
|
|
42788
|
913
|
20
|
2026-04-17T07:38:06.025270+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411486025_m2.jpg...
|
PhpStorm
|
faVsco.js – crm_configurations [EU]
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.03046875,"top":0.017361112,"width":0.0453125,"height":0.022222223},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.14960937,"height":0.022222223},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5081751640215339021
|
-4009658842534132447
|
app_switch
|
hybrid
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
PhpStormFileFditViewNavigateCodelaraveRefactonToolsWindowHelpFV ravsco.is#11894 on.lY-18909-automated-renorts-ask-liminnvProject v• dependency-checker.isonU dev.ison=ids.txt=infection.ison.distM+ INSTALL.mdM+ INTERNAL_WEBHOOK SETUPEjiminny_storageM1 licenses.moMI Makerileu package-lock.jsonE phostan.neon.distE phostan-baseline.neon<> phpunit.xmlle raw sal query.salM+ README.mdợ sonar-project.properties= test.py‹> Untitled Diagram.xmlus vetur.config.jsM.WEBHOOK FILIERING IMPUE> rh External Librariesv = Scratches and Consolesv M Database ConsolesV AEU& console EUl4 DEAL RISKS EUIA DI EUIA EU [EU]vd iminny@localhostd console liminny@localfd Di Liminny@localnost]4 HS_local [jiminny@locald sr yiminny@localhost)V APRODe zono_dev yiminny@loce4 console [PRODIL console 1 PRODIA DI PRODI> LQA› L QAi> L QAI PRODV & STAGNG& console S AGINGI¿ consoe AGINGI& uranus s AGINGIM Extensions• M Scratches= phostorm shortcuts.txtscratch.txtUr scratch 1.isonU scratch_2.sonU scratch_3.sorE scratch 4.txtphp scratch_5.phpphy scratch 6.phpir scratch_7.jsonIr stage2.ison= test</test.htmlC AutomatedReportsService.phpC) SendReportJob.phpC SendReportMailJob.php(©) ReportController.phplokenbullaer.onoC TeamSetupController.phppnp apl.ono1 Filesystem.pnpC AutomatedReportsCommand.pnp© AsKJiminnyReportsController.phpC AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.phpC Team.php(C AutomatedReportsRepository.php© CreateHeldActivityEvent.php©) TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.php© UserPilotActivityListener.phpActivityLoagea.onpAutomatedRenortscallbackService.ono© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php x(C AutomatedReportResult.php(C AutomatedReport.phpclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUniqueB2AY1761931Y41721Y0199209210211212213447200259260261262263private function createResultso// handle multiple media types// create PDF as primary resultsth1s->reportResult = sreportservice->createReportResultautomatedReport: sautomatedReport,data: l"media_type" => Automatedkeporusservice:.MEULA_lYPE_PUr,if Gin arravo needle: AutomatedReportsService::MEDTA TYPE PODCAST. SmediaTvpes..strict: true))sthis->reportResultPodcast = SreportService->createReportResultautomatedReport: $automatedReport.data:'medla_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST.'parent_1d => Sthis->reportResult->getido,usaoeorivate Tunccion checkaccivicylount rroonecullent soropnecullent, array soayloaa,LoccerintertaceLusagesprivate function failReport(int $reason): void1f (1sset(sthis->reportResult)) isthis->reportresult->update(L"suacus = AucomatedkeporckesULt:.SIATUS_FALLEU."reason" = sreason,if isset(sthis->reportResultPodcast ‹sthis->reportResultPodcast->updated'status' => AutomatedReportResult::STATUS_ FATLED.'reason' => sreason,J9H= custom.log= laravel.loge SF (iminny@localhostU scratch_1.isonV connect.vueV Onboard.vueHs local liminnyalocalnost< console LUi(iii crm configurations [EU] X¿ console IPRODIe console [STAGINGrow vX:Auto vDDLY- WHERE id = 367E- ORDER BY367Iuuid UUID with time-low and time-high swapped) ÷fa0cf643-d30e-43b8-ab3d-1fe1825460oe team_1dLonotifiable_user_idproviderI• editionW instance!_ is_sandboxI versionD installed_app_version•_ sync_metadatasync objectsauto svnc activity0 crm_provider_idW crm_base_uru• last synced atI leads svnced atMaccounts sunced atШ contacts_synced_atopportunities synced_atIn contact roles synced atw over_quota_atW ap1_disabled_atsettings! opportunity_assignment_rule! opportunity_max_value•_ opportunity_max_ageILo opportunity value field id! trigger_assignment_ruleso_ score_transcripu•_ softphone_override_prospect• default currencyIn created atW updacea_au459<null>hubspotSULL<nul<hULl3364459Cascade & 7lsensat..co2026-04-17 07:14:23ShULL<hU LE<nili><null>SnULl<hU LE<null>"opportunity sync_ period":"om","oopen-recently-upaaced6958000.0037K191ShULLe2025-04-02 11:33:462026-04-17 07:14-23lobl" Backend Chanter . nowA100% z• Fri 17 Apr 10:38:05AutomatedRenortsCommandTestCascadeAutomated Report Retishow me exactyl where do we set result as sent or failedThere are 3 places total:searcheastatus. FAILED and perormedl other queryFocusina onlv on AutomatedReportResult status transitions.STATUS SENT - set in SendReportMailJob after the email is delivered:M SendReportMailJob.php:135-14g1t srenort-sstatus le= AutomaredRenortResult.STATIS SENIT*cache:: lock("report-status-i$this->reportUuid,, 5)->block(2, function () use (Sreport) ‹prevort-ruvualerl'status' = AutomatedReportResult::STATUS SENT,"sent_at = nowl),STATUS_FAILED - set in 3 places:1. SendReportJob::failed() - when the dispatch/pre-send phase tails terminally (null path, Semissing, etc.):nort.00.nhn:175-17eCommand 98-únction failed (Throwable Sexception): voidAutomatedReportResult::whereRaw('uuid = uuid to bin(?)', [$this→>reportUuidl)→updatell status → AutomatedneporcResuLCi.SlAlUSFALLeOIe2. RequestGenerateReportJob - when report generation fails (before it even reaches sending):• RequestGenerateReportJob.php:252-264$this->reportResult->update(["status = Automatedkeporckesult::sIAlUs_FALLED,'reason" = $reason,J9HRequestcenerateaskaminnvkevorto —same, Tor ASk Jiminny vartant• RequestGenerateAskJiminnyReportJob.php:203-207sunus-> reportresursuodarel'status' = AutomatedReportResult::STATUS_FATLED,'reason" = $reason,J9HWnal "1 file +16)Ask anything (&+L)+ <> Code Claude Sonnet 4.6Reject allAccept allWinasun leams...
|
NULL
|
|
42789
|
912
|
22
|
2026-04-17T07:38:07.253064+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411487253_m1.jpg...
|
Slack
|
engineering (Channel) - Jiminny Inc - Slack
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"role_description":"text"}]...
|
617739687880663418
|
-4238952016404071317
|
app_switch
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
iTerm2ShellEditViewSessionScriptsProfilesWindowHelpec2-user@ip-10-20-6-111:~X4DOCKER• ₴1DEV (-zsh)APP (-zsh)X3-zshDays Active:3/3Daily Average: 265.33root@67e84f80b9d1:/home/jiminny# php artisan crm:hubspot-webhook metrics -T 459 --from 2026-04-15 -DINFOManaging webhookmetrics for date range.Date RangeConfig IDIll Range SummaryDate RangeTotal DaysOldest Data AgeTotal WebhooksDaily AverageActive Companies• ₴5Backend Chapter • now100% 147 8• Fri 17 Apr 10:38:061₴81* Review screenp...• ₴6ec2-user@ip-10-30-...$7ec2-user@ip-10-20-...88PS$ITerm312026-04-15 to2026-04-173672026-04-15 to 2026-04-1732.0 days ago1,065,677355,225.6789NTotal Webhooks: 796Days Active: 3/3Daily Average: 265.33company (114 total, avg:38)association_change: 92 total, avg:46, active: 2 dayscreation: 3 total, avg: 1.5, active: 2 daysproperty_change: 19total, avg: 9.5, active: 2 daysUnique properties: 4Top properties: hubspot_owner_id(12), domain(3), name(3), phone(1)deal (164 total, avg: 54.67)property_change: 164 total, avg: 54.67, active: 3 daysUnique properties: 8Top properties: notes_last_updated(134), closedate(7), dealstage(5), hs_deal_stage_probabillity(5), hs_manual_forecast-category(5)contact (518 total, avg: 172.67)property_change:390 total, avg: 130, active: 3 daysUnique properties: 9Top properties: hubspot_owner_id(186), firstname(35), email(35), associatedcompanyid(33), country(33)creation: 36 total, avg: 18, active: 2 daysassociation_change: 92 total, avg: 46, active: 2 daysroote67e84f80b9d1:/home/jiminny#|...
|
NULL
|
|
42799
|
913
|
26
|
2026-04-17T07:38:51.308666+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411531308_m2.jpg...
|
PhpStorm
|
faVsco.js – crm_configurations [EU]
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459
459
0
<null>
<null>
0
hubspot
hubspot
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
0
0
0
2
2
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
1
1
0
1
1
0
1
1
0
3364459
3364459
2026-04-17 07:14:23
sensat.co
sensat.co
2026-04-17 07:14:23
2026-04-17 07:14:23
2026-04-17 07:14:23
2026-04-17 07:14:23...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.03046875,"top":0.017361112,"width":0.0453125,"height":0.022222223},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.14960937,"height":0.022222223},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.78515625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.803125,"top":0.017361112,"width":0.09765625,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9007813,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9140625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9273437,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96015626,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9734375,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9867188,"top":0.017361112,"width":0.013281226,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.049609374,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.4265625,"top":0.19513889,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.43789062,"top":0.19375,"width":0.00859375,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.4464844,"top":0.19375,"width":0.008203125,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"367","depth":6,"bounds":{"left":0.62226564,"top":0.16527778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"367","depth":7,"bounds":{"left":0.62226564,"top":0.16527778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":6,"bounds":{"left":0.62226564,"top":0.18402778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":7,"bounds":{"left":0.62226564,"top":0.18402778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"459","depth":6,"bounds":{"left":0.62226564,"top":0.20277777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"459","depth":7,"bounds":{"left":0.62226564,"top":0.20277777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.22152779,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.22152779,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"hubspot","depth":6,"bounds":{"left":0.62226564,"top":0.24027778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"hubspot","depth":7,"bounds":{"left":0.62226564,"top":0.24027778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.25902778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.25902778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.2777778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.2777778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"bounds":{"left":0.62226564,"top":0.29652777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"bounds":{"left":0.62226564,"top":0.29652777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.62226564,"top":0.31527779,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.62226564,"top":0.31527779,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.33402777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.33402777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1","depth":6,"bounds":{"left":0.62226564,"top":0.35277778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"1","depth":7,"bounds":{"left":0.62226564,"top":0.35277778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1","depth":6,"bounds":{"left":0.62226564,"top":0.3715278,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"1","depth":7,"bounds":{"left":0.62226564,"top":0.3715278,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1","depth":6,"bounds":{"left":0.62226564,"top":0.39027777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"1","depth":7,"bounds":{"left":0.62226564,"top":0.39027777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"3364459","depth":6,"bounds":{"left":0.62226564,"top":0.40902779,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"3364459","depth":7,"bounds":{"left":0.62226564,"top":0.40902779,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"sensat.co","depth":6,"bounds":{"left":0.62226564,"top":0.42777777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"sensat.co","depth":7,"bounds":{"left":0.62226564,"top":0.42777777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-04-17 07:14:23","depth":6,"bounds":{"left":0.62226564,"top":0.44652778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"2026-04-17 07:14:23","depth":7,"bounds":{"left":0.62226564,"top":0.44652778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
6588049528837765350
|
-6048023426475267506
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459
459
0
<null>
<null>
0
hubspot
hubspot
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
0
0
0
2
2
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
1
1
0
1
1
0
1
1
0
3364459
3364459
2026-04-17 07:14:23
sensat.co
sensat.co
2026-04-17 07:14:23
2026-04-17 07:14:23
2026-04-17 07:14:23
2026-04-17 07:14:23...
|
NULL
|
|
42800
|
912
|
27
|
2026-04-17T07:38:51.265280+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411531265_m1.jpg...
|
PhpStorm
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEdit|ViewSessionScriptsProfilesWindowHe iTerm2ShellEdit|ViewSessionScriptsProfilesWindowHelplaln)Backend Chapter • now100% C47 8• Fri 17 Apr 10:38:50ec2-user@ip-10-20-6-111:~X41₴81DOCKER• ₴1DEV (-zsh)882APP (-zsh)|X3-zsh•95* Review screenp...• X6ec2-user@ip-10-30-...X7Days Active: 3/3Daily Average: 265.33root@67e84f80b9d1:/home/jiminny# php artisan crm:hubspot-webhook metrics -T 459 --from 2026-04-15 -DINFOManaging webhookmetrics for date range.Date RangeConfig IDIll Range SummaryDate RangeTotal DaysOldest Data AgeTotal WebhooksDaily AverageActive Companiesiz Daily Breakdown2026-04-15:335,647 webhooks, 88 companies active2026-04-16: 671,679 webhooks, 88 companies active2026-04-17: 58,351 webhooks, 68 companies active| Company Details2026-04-15 to2026-04-173672026-04-15 to 2026-04-1732.0 days ago1,065,677355,225.6789Company 367 (Sensat - 459)Total Webhooks: 796Days Active: 3/3Daily Average: 265.33company (114 total, avg: 38)association_change: 92 total, avg: 46, active: 2 dayscreation: 3 total, avg: 1.5, active: 2 daysproperty_change: 19 total, avg: 9.5, active: 2 daysUnique properties: 4Top properties: hubspot_owner_id(12), domain(3), name(3), phone(1)deal (164 total, avg: 54.67)property_change: 164 total, avg: 54.67, active: 3 daysUnique properties: 8Top properties: notes_last_updated(134), closedate(7), dealstage(5), hs_deal_stage_probability(5), hs_manual_forecast_category(5)contact (518 total, avg: 172.67)property_change:390 total, avg: 130, active: 3 daysUnique properties: 9Top properties: hubspot_owner_id(186), firstname(35), email(35),associatedcompanyid(33), country(33)creation: 36 total, avg: 18, active: 2 daysassociation_change: 92 total, avg: 46, active: 2 daysroote67e84f80b9d1:/home/jiminny# |ec2-user@ip-10-20-......
|
NULL
|
627115435373630439
|
NULL
|
app_switch
|
ocr
|
NULL
|
iTerm2ShellEdit|ViewSessionScriptsProfilesWindowHe iTerm2ShellEdit|ViewSessionScriptsProfilesWindowHelplaln)Backend Chapter • now100% C47 8• Fri 17 Apr 10:38:50ec2-user@ip-10-20-6-111:~X41₴81DOCKER• ₴1DEV (-zsh)882APP (-zsh)|X3-zsh•95* Review screenp...• X6ec2-user@ip-10-30-...X7Days Active: 3/3Daily Average: 265.33root@67e84f80b9d1:/home/jiminny# php artisan crm:hubspot-webhook metrics -T 459 --from 2026-04-15 -DINFOManaging webhookmetrics for date range.Date RangeConfig IDIll Range SummaryDate RangeTotal DaysOldest Data AgeTotal WebhooksDaily AverageActive Companiesiz Daily Breakdown2026-04-15:335,647 webhooks, 88 companies active2026-04-16: 671,679 webhooks, 88 companies active2026-04-17: 58,351 webhooks, 68 companies active| Company Details2026-04-15 to2026-04-173672026-04-15 to 2026-04-1732.0 days ago1,065,677355,225.6789Company 367 (Sensat - 459)Total Webhooks: 796Days Active: 3/3Daily Average: 265.33company (114 total, avg: 38)association_change: 92 total, avg: 46, active: 2 dayscreation: 3 total, avg: 1.5, active: 2 daysproperty_change: 19 total, avg: 9.5, active: 2 daysUnique properties: 4Top properties: hubspot_owner_id(12), domain(3), name(3), phone(1)deal (164 total, avg: 54.67)property_change: 164 total, avg: 54.67, active: 3 daysUnique properties: 8Top properties: notes_last_updated(134), closedate(7), dealstage(5), hs_deal_stage_probability(5), hs_manual_forecast_category(5)contact (518 total, avg: 172.67)property_change:390 total, avg: 130, active: 3 daysUnique properties: 9Top properties: hubspot_owner_id(186), firstname(35), email(35),associatedcompanyid(33), country(33)creation: 36 total, avg: 18, active: 2 daysassociation_change: 92 total, avg: 46, active: 2 daysroote67e84f80b9d1:/home/jiminny# |ec2-user@ip-10-20-......
|
NULL
|
|
42801
|
913
|
27
|
2026-04-17T07:38:51.899006+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411531899_m2.jpg...
|
Firefox
|
Meet - Backend Chapter — Work
|
True
|
meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovali meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.com...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Backend Chapter","depth":4,"bounds":{"left":0.35351562,"top":0.23819445,"width":0.019140625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.35429686,"top":0.23819445,"width":0.005859375,"height":0.010416667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.35664064,"top":0.26805556,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.35351562,"top":0.69166666,"width":0.019140625,"height":0.027083334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.35351562,"top":0.71875,"width":0.019140625,"height":0.024305556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.35351562,"top":0.7430556,"width":0.019140625,"height":0.023611112},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.35351562,"top":0.76666665,"width":0.019140625,"height":0.024305556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.35351562,"top":0.79097223,"width":0.019140625,"height":0.027083334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Return to home screen","depth":10,"bounds":{"left":0.37890625,"top":0.24930556,"width":0.041015625,"height":0.027777778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.8257812,"top":0.25069445,"width":0.065625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Switch account","depth":11,"bounds":{"left":0.85664064,"top":0.26180556,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Switch account","depth":12,"bounds":{"left":0.85664064,"top":0.26180556,"width":0.034765624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":14,"bounds":{"left":0.415625,"top":0.36875,"width":0.03515625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More options","depth":13,"bounds":{"left":0.67578125,"top":0.35833332,"width":0.01875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":14,"bounds":{"left":0.51484376,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Turn off camera","depth":14,"bounds":{"left":0.54296875,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Turn on background blur","depth":13,"bounds":{"left":0.57109374,"top":0.59652776,"width":0.021875,"height":0.033333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Microphone: soundcore AeroClip","depth":13,"bounds":{"left":0.409375,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Speaker: System Default Speaker Device","depth":13,"bounds":{"left":0.48242188,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Camera: FaceTime HD Camera","depth":13,"bounds":{"left":0.55546874,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Backgrounds and effects","depth":12,"bounds":{"left":0.6285156,"top":0.6548611,"width":0.06992187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Backend Chapter","depth":11,"bounds":{"left":0.7046875,"top":0.39444444,"width":0.175,"height":0.025},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backend Chapter","depth":14,"bounds":{"left":0.74960935,"top":0.39375,"width":0.08515625,"height":0.025694445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov is in this call","depth":13,"bounds":{"left":0.7558594,"top":0.45277777,"width":0.07265625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Use Gemini to take notes Share notes and transcript","depth":11,"bounds":{"left":0.72929686,"top":0.47777778,"width":0.12578125,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use Gemini to take notes","depth":12,"bounds":{"left":0.75273436,"top":0.4875,"width":0.06328125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Share notes and transcript","depth":12,"bounds":{"left":0.75273436,"top":0.5013889,"width":0.05625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start","depth":12,"bounds":{"left":0.8191406,"top":0.4861111,"width":0.03125,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Start","depth":14,"bounds":{"left":0.82851565,"top":0.49305555,"width":0.0125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Join now","depth":12,"bounds":{"left":0.7453125,"top":0.53333336,"width":0.09375,"height":0.03888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Join now","depth":14,"bounds":{"left":0.78085935,"top":0.54583335,"width":0.02265625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Other ways to join","depth":12,"bounds":{"left":0.7558594,"top":0.59166664,"width":0.07265625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.","depth":12,"bounds":{"left":0.52070314,"top":0.75555557,"width":0.26328126,"height":0.035416666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Learn more","depth":12,"bounds":{"left":0.6625,"top":0.77916664,"width":0.027734375,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Learn more","depth":13,"bounds":{"left":0.6625,"top":0.77916664,"width":0.027734375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your camera is on. Your microphone is on.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Background is now replaced","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6010097635338979075
|
1101227023045744603
|
app_switch
|
accessibility
|
NULL
|
Meet - Backend Chapter
Close tab
New Tab
Open Goog Meet - Backend Chapter
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Return to home screen
[EMAIL]
Switch account
Switch account
Lukas Kovalik
More options
Turn off microphone
Turn off camera
Turn on background blur
Microphone: soundcore AeroClip
Speaker: System Default Speaker Device
Camera: FaceTime HD Camera
Backgrounds and effects
Backend Chapter
Backend Chapter
Nikolay Nikolov is in this call
Use Gemini to take notes Share notes and transcript
Use Gemini to take notes
Share notes and transcript
Start
Start
Join now
Join now
Other ways to join
Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporary access to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meeting host can turn it off.
Learn more
Learn more
Your camera is on. Your microphone is on.
Background is now replaced...
|
NULL
|
|
42813
|
912
|
31
|
2026-04-17T07:39:12.376038+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411552376_m1.jpg...
|
PhpStorm
|
faVsco.js – crm_configurations [EU]
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459
459
0
<null>
<null>...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"367","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"367","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"459","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"459","depth":7,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"role_description":"text"}]...
|
2168190072860791120
|
-5903908238265193908
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459
459
0
<null>
<null>...
|
NULL
|
|
42814
|
913
|
36
|
2026-04-17T07:39:12.373184+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411552373_m2.jpg...
|
PhpStorm
|
faVsco.js – crm_configurations [EU]
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459
459
0
<null>
<null>
0
hubspot
hubspot
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
0
0
0
2
2
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
1
1
0
1
1
0
1
1
0
3364459
3364459
2026-04-17 07:14:23
sensat.co
sensat.co...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.03046875,"top":0.017361112,"width":0.0453125,"height":0.022222223},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.14960937,"height":0.022222223},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.78515625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.803125,"top":0.017361112,"width":0.09765625,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9007813,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9140625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9273437,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96015626,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9734375,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9867188,"top":0.017361112,"width":0.013281226,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.049609374,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.4265625,"top":0.19513889,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.43789062,"top":0.19375,"width":0.00859375,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.4464844,"top":0.19375,"width":0.008203125,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\ProphetAi\\Exceptions\\ProphetException;\nuse Jiminny\\Component\\ProphetAi\\ProphetClient;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\ApiResponseException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique\n{\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages from this job\n */\n private const string LOG_PREFIX = '[Report:Generate]';\n\n private const int MIN_ACTIVITIES_COUNT = 10;\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n private readonly string $reportUuid;\n private ?AutomatedReportResult $reportResult = null;\n private ?AutomatedReportResult $reportResultPodcast = null;\n\n public function __construct(string $reportUuid)\n {\n $this->reportUuid = $reportUuid;\n $this->onQueue(Constants::QUEUE_ANALYTICS);\n }\n\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n\n public function handle(\n AutomatedReportsService $reportService,\n ProphetClient $prophetClient,\n LoggerInterface $logger\n ): void {\n $logger->info(self::LOG_PREFIX . ' - Started', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n try {\n $automatedReport = $reportService->getReport(uuid: $this->reportUuid);\n\n if (! $this->validateReport($automatedReport, $logger)) {\n return;\n }\n\n $this->createResults(automatedReport: $automatedReport, reportService: $reportService);\n\n $payload = $reportService->getGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResultUuid: $this->reportResult->getUuid()\n );\n\n $now = Carbon::now();\n\n $this->reportResult->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'payload' => $payload,\n 'requested_at' => $now,\n ]);\n }\n\n if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {\n return;\n }\n\n $now = Carbon::now();\n\n // send generate report request\n $this->reportResult->update([\n 'name' => $reportService->getReportFileName($this->reportResult),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'name' => $reportService->getReportFileName($this->reportResultPodcast),\n 'status' => AutomatedReportResult::STATUS_REQUESTED,\n 'requested_at' => $now,\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' - Request sent', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT,\n requestArray: $payload\n );\n $logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);\n } catch (Throwable $exception) {\n $reportUuid = null;\n\n $reason = $exception instanceof ProphetException ?\n AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;\n\n $this->failReport($reason);\n\n $logger->error(\n self::LOG_PREFIX . ' - Error',\n [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $reportUuid,\n 'code' => $exception->getCode(),\n 'message' => $exception->getMessage(),\n ]\n );\n\n if ($this->attempts() < $this->tries) {\n $logger->info(self::LOG_PREFIX . ' - Retry scheduled', [\n 'attempts' => $this->attempts(),\n ]);\n\n $this->release(30);\n } else {\n $this->fail($exception);\n }\n }\n }\n\n private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool\n {\n if (! $automatedReport->getStatus()) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {\n $logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [\n 'automatedReportUuid' => $this->reportUuid,\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function createResults(\n AutomatedReport $automatedReport,\n AutomatedReportsService $reportService\n ): void {\n $mediaTypes = $automatedReport->getMediaTypes();\n\n // handle PDF or podcast\n if (count($mediaTypes) === 1) {\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => $mediaTypes[0],\n ]\n );\n\n return;\n }\n\n // handle multiple media types\n // create PDF as primary result\n $this->reportResult = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,\n ]\n );\n\n if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {\n $this->reportResultPodcast = $reportService->createReportResult(\n automatedReport: $automatedReport,\n data: [\n 'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,\n 'parent_id' => $this->reportResult->getId(),\n ]\n );\n }\n }\n\n private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool\n {\n $logger->info(self::LOG_PREFIX . ' - Request activities count', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n 'payload' => $payload,\n ]);\n // validate expected activities count before sending request\n $response = $prophetClient->sendRequest(\n endpoint: ProphetClient::EXEC_REPORT_COUNT,\n requestArray: $payload\n );\n $content = $response->getContent();\n\n if (! isset($content['response'])) {\n throw new ApiResponseException('Error getting activities count');\n }\n\n $logger->info(self::LOG_PREFIX . ' - Get activities count', $content);\n\n $count = (int) $content['response'];\n if ($count < self::MIN_ACTIVITIES_COUNT) {\n $this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);\n\n $logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [\n 'automatedReportUuid' => $this->reportUuid,\n 'reportUuid' => $this->reportResult->getUuid(),\n ]);\n\n return false;\n }\n\n return true;\n }\n\n private function failReport(int $reason): void\n {\n if (isset($this->reportResult)) {\n $this->reportResult->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n\n if (isset($this->reportResultPodcast)) {\n $this->reportResultPodcast->update([\n 'status' => AutomatedReportResult::STATUS_FAILED,\n 'reason' => $reason,\n ]);\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"367","depth":6,"bounds":{"left":0.62226564,"top":0.16527778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"367","depth":7,"bounds":{"left":0.62226564,"top":0.16527778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":6,"bounds":{"left":0.62226564,"top":0.18402778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"fa0cf643-d30e-43b8-ab3d-1fe18254609c","depth":7,"bounds":{"left":0.62226564,"top":0.18402778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"459","depth":6,"bounds":{"left":0.62226564,"top":0.20277777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"459","depth":7,"bounds":{"left":0.62226564,"top":0.20277777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.22152779,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.22152779,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"hubspot","depth":6,"bounds":{"left":0.62226564,"top":0.24027778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"hubspot","depth":7,"bounds":{"left":0.62226564,"top":0.24027778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.25902778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.25902778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.2777778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.2777778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"bounds":{"left":0.62226564,"top":0.29652777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"bounds":{"left":0.62226564,"top":0.29652777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.62226564,"top":0.31527779,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.62226564,"top":0.31527779,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.62226564,"top":0.33402777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.62226564,"top":0.33402777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1","depth":6,"bounds":{"left":0.62226564,"top":0.35277778,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"1","depth":7,"bounds":{"left":0.62226564,"top":0.35277778,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1","depth":6,"bounds":{"left":0.62226564,"top":0.3715278,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"1","depth":7,"bounds":{"left":0.62226564,"top":0.3715278,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1","depth":6,"bounds":{"left":0.62226564,"top":0.39027777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"1","depth":7,"bounds":{"left":0.62226564,"top":0.39027777,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"3364459","depth":6,"bounds":{"left":0.62226564,"top":0.40902779,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"3364459","depth":7,"bounds":{"left":0.62226564,"top":0.40902779,"width":0.11757813,"height":0.018055556},"role_description":"text"},{"role":"AXTextArea","text":"2026-04-17 07:14:23","depth":8,"bounds":{"left":0.23320313,"top":1.0,"width":0.115234375,"height":0.0},"value":"2026-04-17 07:14:23","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"sensat.co","depth":6,"bounds":{"left":0.62226564,"top":0.42777777,"width":0.11757813,"height":0.018055556},"role_description":"cell"},{"role":"AXStaticText","text":"sensat.co","depth":7,"bounds":{"left":0.62226564,"top":0.42777777,"width":0.11757813,"height":0.018055556},"role_description":"text"}]...
|
7029095271105778440
|
-5831850644361483700
|
app_switch
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Carbon\Carbon;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\ProphetAi\Exceptions\ProphetException;
use Jiminny\Component\ProphetAi\ProphetClient;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\ApiResponseException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class RequestGenerateReportJob implements ShouldQueue, ShouldBeUnique
{
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages from this job
*/
private const string LOG_PREFIX = '[Report:Generate]';
private const int MIN_ACTIVITIES_COUNT = 10;
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
private readonly string $reportUuid;
private ?AutomatedReportResult $reportResult = null;
private ?AutomatedReportResult $reportResultPodcast = null;
public function __construct(string $reportUuid)
{
$this->reportUuid = $reportUuid;
$this->onQueue(Constants::QUEUE_ANALYTICS);
}
public function uniqueId(): string
{
return $this->reportUuid;
}
public function handle(
AutomatedReportsService $reportService,
ProphetClient $prophetClient,
LoggerInterface $logger
): void {
$logger->info(self::LOG_PREFIX . ' - Started', [
'automatedReportUuid' => $this->reportUuid,
]);
try {
$automatedReport = $reportService->getReport(uuid: $this->reportUuid);
if (! $this->validateReport($automatedReport, $logger)) {
return;
}
$this->createResults(automatedReport: $automatedReport, reportService: $reportService);
$payload = $reportService->getGenerateReportPayload(
automatedReport: $automatedReport,
reportResultUuid: $this->reportResult->getUuid()
);
$now = Carbon::now();
$this->reportResult->update([
'payload' => $payload,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'payload' => $payload,
'requested_at' => $now,
]);
}
if (! $this->checkActivityCount($prophetClient, $payload, $logger)) {
return;
}
$now = Carbon::now();
// send generate report request
$this->reportResult->update([
'name' => $reportService->getReportFileName($this->reportResult),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'name' => $reportService->getReportFileName($this->reportResultPodcast),
'status' => AutomatedReportResult::STATUS_REQUESTED,
'requested_at' => $now,
]);
}
$logger->info(self::LOG_PREFIX . ' - Request sent', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT,
requestArray: $payload
);
$logger->info(self::LOG_PREFIX . ' - Response received', ['response' => $response->getContent()]);
} catch (Throwable $exception) {
$reportUuid = null;
$reason = $exception instanceof ProphetException ?
AutomatedReportResult::REASON_PROPHET_API_ERROR : AutomatedReportResult::REASON_DEFAULT;
$this->failReport($reason);
$logger->error(
self::LOG_PREFIX . ' - Error',
[
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $reportUuid,
'code' => $exception->getCode(),
'message' => $exception->getMessage(),
]
);
if ($this->attempts() < $this->tries) {
$logger->info(self::LOG_PREFIX . ' - Retry scheduled', [
'attempts' => $this->attempts(),
]);
$this->release(30);
} else {
$this->fail($exception);
}
}
}
private function validateReport(AutomatedReport $automatedReport, LoggerInterface $logger): bool
{
if (! $automatedReport->getStatus()) {
$logger->info(self::LOG_PREFIX . ' - Skipped, report is not active', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
if ($automatedReport->getTeam()->getStatus() !== Team::STATUS_ACTIVE) {
$logger->info(self::LOG_PREFIX . ' - Skipped, team is inactive', [
'automatedReportUuid' => $this->reportUuid,
]);
return false;
}
return true;
}
private function createResults(
AutomatedReport $automatedReport,
AutomatedReportsService $reportService
): void {
$mediaTypes = $automatedReport->getMediaTypes();
// handle PDF or podcast
if (count($mediaTypes) === 1) {
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'status' => AutomatedReportResult::STATUS_DEFAULT,
'media_type' => $mediaTypes[0],
]
);
return;
}
// handle multiple media types
// create PDF as primary result
$this->reportResult = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PDF,
]
);
if (in_array(AutomatedReportsService::MEDIA_TYPE_PODCAST, $mediaTypes, true)) {
$this->reportResultPodcast = $reportService->createReportResult(
automatedReport: $automatedReport,
data: [
'media_type' => AutomatedReportsService::MEDIA_TYPE_PODCAST,
'parent_id' => $this->reportResult->getId(),
]
);
}
}
private function checkActivityCount(ProphetClient $prophetClient, array $payload, LoggerInterface $logger): bool
{
$logger->info(self::LOG_PREFIX . ' - Request activities count', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
'payload' => $payload,
]);
// validate expected activities count before sending request
$response = $prophetClient->sendRequest(
endpoint: ProphetClient::EXEC_REPORT_COUNT,
requestArray: $payload
);
$content = $response->getContent();
if (! isset($content['response'])) {
throw new ApiResponseException('Error getting activities count');
}
$logger->info(self::LOG_PREFIX . ' - Get activities count', $content);
$count = (int) $content['response'];
if ($count < self::MIN_ACTIVITIES_COUNT) {
$this->failReport(AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES);
$logger->info(self::LOG_PREFIX . ' - Not enough activities, skipped', [
'automatedReportUuid' => $this->reportUuid,
'reportUuid' => $this->reportResult->getUuid(),
]);
return false;
}
return true;
}
private function failReport(int $reason): void
{
if (isset($this->reportResult)) {
$this->reportResult->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
if (isset($this->reportResultPodcast)) {
$this->reportResultPodcast->update([
'status' => AutomatedReportResult::STATUS_FAILED,
'reason' => $reason,
]);
}
}
}
367
367
0
fa0cf643-d30e-43b8-ab3d-1fe18254609c
fa0cf643-d30e-43b8-ab3d-1fe18254609c
2026-04-17 07:14:23
459
459
0
<null>
<null>
0
hubspot
hubspot
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
0
0
0
2
2
2026-04-17 07:14:23
<null>
<null>
2026-04-17 07:14:23
1
1
0
1
1
0
1
1
0
3364459
3364459
2026-04-17 07:14:23
sensat.co
sensat.co...
|
NULL
|
|
42815
|
912
|
32
|
2026-04-17T07:39:12.913023+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411552913_m1.jpg...
|
Firefox
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpec2-user@ip-10-20-6-111:~X4laln)985* Review screenp...Backend Chapter • now100% C47 8• Fri 17 Apr 10:39:121₴81DOCKER881DEV (-zsh)882APP (-zsh)|-zsh• X6ec2-user@ip-10-30-...X7Days Active: 3/3Daily Average: 265.33root@67e84f80b9d1:/home/jiminny# php artisan crm:hubspot-webhook metrics -T 459 --from 2026-04-15 -DINFOManaging webhookmetrics for date range.Date RangeConfig IDIll Range SummaryDate RangeTotal DaysOldest Data AgeTotal WebhooksDaily AverageActive Companiesiz Daily Breakdown2026-04-15:335,647 webhooks, 88 companies active2026-04-16: 671,679 webhooks, 88 companies active2026-04-17: 58,351 webhooks, 68 companies activel Company Details2026-04-15 to2026-04-173672026-04-15 to 2026-04-1732.0 days ago1,065,677355,225.6789Company 367 (Sensat - 459)Total Webhooks: 796Days Active: 3/3Daily Average: 265.33company (114 total, avg: 38)association_change: 92 total, avg: 46, active: 2 dayscreation: 3 total, avg: 1.5, active: 2 daysproperty_change: 19 total, avg: 9.5, active: 2 daysUnique properties: 4Top properties: hubspot_owner_id(12), domain(3), name(3), phone(1)deal (164 total, avg: 54.67)property_change: 164 total, avg: 54.67, active: 3 daysUnique properties: 8Top properties: notes_last_updated(134), closedate(7), dealstage(5), hs_deal_stage_probability(5), hs_manual_forecast_category(5)contact (518 total, avg: 172.67)property_change:390 total, avg: 130, active: 3 daysUnique properties: 9Top properties: hubspot_owner_id(186), firstname(35), email(35),associatedcompanyid(33), country(33)creation: 36 total, avg: 18, active: 2 daysassociation_change: 92 total, avg: 46, active: 2 daysroote67e84f80b9d1:/home/jiminny# |ec2-user@ip-10-20-......
|
NULL
|
3921959254287300174
|
NULL
|
app_switch
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpec2-user@ip-10-20-6-111:~X4laln)985* Review screenp...Backend Chapter • now100% C47 8• Fri 17 Apr 10:39:121₴81DOCKER881DEV (-zsh)882APP (-zsh)|-zsh• X6ec2-user@ip-10-30-...X7Days Active: 3/3Daily Average: 265.33root@67e84f80b9d1:/home/jiminny# php artisan crm:hubspot-webhook metrics -T 459 --from 2026-04-15 -DINFOManaging webhookmetrics for date range.Date RangeConfig IDIll Range SummaryDate RangeTotal DaysOldest Data AgeTotal WebhooksDaily AverageActive Companiesiz Daily Breakdown2026-04-15:335,647 webhooks, 88 companies active2026-04-16: 671,679 webhooks, 88 companies active2026-04-17: 58,351 webhooks, 68 companies activel Company Details2026-04-15 to2026-04-173672026-04-15 to 2026-04-1732.0 days ago1,065,677355,225.6789Company 367 (Sensat - 459)Total Webhooks: 796Days Active: 3/3Daily Average: 265.33company (114 total, avg: 38)association_change: 92 total, avg: 46, active: 2 dayscreation: 3 total, avg: 1.5, active: 2 daysproperty_change: 19 total, avg: 9.5, active: 2 daysUnique properties: 4Top properties: hubspot_owner_id(12), domain(3), name(3), phone(1)deal (164 total, avg: 54.67)property_change: 164 total, avg: 54.67, active: 3 daysUnique properties: 8Top properties: notes_last_updated(134), closedate(7), dealstage(5), hs_deal_stage_probability(5), hs_manual_forecast_category(5)contact (518 total, avg: 172.67)property_change:390 total, avg: 130, active: 3 daysUnique properties: 9Top properties: hubspot_owner_id(186), firstname(35), email(35),associatedcompanyid(33), country(33)creation: 36 total, avg: 18, active: 2 daysassociation_change: 92 total, avg: 46, active: 2 daysroote67e84f80b9d1:/home/jiminny# |ec2-user@ip-10-20-......
|
NULL
|
|
42816
|
912
|
33
|
2026-04-17T07:39:15.370810+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411555370_m1.jpg...
|
PhpStorm
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEdit|ViewSessionScriptsProfilesWindowHe iTerm2ShellEdit|ViewSessionScriptsProfilesWindowHelplaln)Backend Chapter • now100% C47 8• Fri 17 Apr 10:39:14ec2-user@ip-10-20-6-111:~X41₴81DOCKER• ₴1DEV (-zsh)882APP (-zsh)|X3-zsh•95* Review screenp...• X6ec2-user@ip-10-30-...X7Days Active: 3/3Daily Average: 265.33root@67e84f80b9d1:/home/jiminny# php artisan crm:hubspot-webhook metrics -T 459 --from 2026-04-15 -DINFOManaging webhookmetrics for date range.Date RangeConfig IDIll Range SummaryDate RangeTotal DaysOldest Data AgeTotal WebhooksDaily AverageActive Companiesiz Daily Breakdown2026-04-15:335,647 webhooks, 88 companies active2026-04-16: 671,679 webhooks, 88 companies active2026-04-17: 58,351 webhooks, 68 companies active| Company Details2026-04-15 to2026-04-173672026-04-15 to 2026-04-1732.0 days ago1,065,677355,225.6789Company 367 (Sensat - 459)Total Webhooks: 796Days Active: 3/3Daily Average: 265.33company (114 total, avg: 38)association_change: 92 total, avg: 46, active: 2 dayscreation: 3 total, avg: 1.5, active: 2 daysproperty_change: 19 total, avg: 9.5, active: 2 daysUnique properties: 4Top properties: hubspot_owner_id(12), domain(3), name(3), phone(1)deal (164 total, avg: 54.67)property_change: 164 total, avg: 54.67, active: 3 daysUnique properties: 8Top properties: notes_last_updated(134), closedate(7), dealstage(5), hs_deal_stage_probability(5), hs_manual_forecast_category(5)contact (518 total, avg: 172.67)property_change:390 total, avg: 130, active: 3 daysUnique properties: 9Top properties: hubspot_owner_id(186), firstname(35), email(35),associatedcompanyid(33), country(33)creation: 36 total, avg: 18, active: 2 daysassociation_change: 92 total, avg: 46, active: 2 daysroote67e84f80b9d1:/home/jiminny# |ec2-user@ip-10-20-......
|
NULL
|
-2781701112162795290
|
NULL
|
app_switch
|
ocr
|
NULL
|
iTerm2ShellEdit|ViewSessionScriptsProfilesWindowHe iTerm2ShellEdit|ViewSessionScriptsProfilesWindowHelplaln)Backend Chapter • now100% C47 8• Fri 17 Apr 10:39:14ec2-user@ip-10-20-6-111:~X41₴81DOCKER• ₴1DEV (-zsh)882APP (-zsh)|X3-zsh•95* Review screenp...• X6ec2-user@ip-10-30-...X7Days Active: 3/3Daily Average: 265.33root@67e84f80b9d1:/home/jiminny# php artisan crm:hubspot-webhook metrics -T 459 --from 2026-04-15 -DINFOManaging webhookmetrics for date range.Date RangeConfig IDIll Range SummaryDate RangeTotal DaysOldest Data AgeTotal WebhooksDaily AverageActive Companiesiz Daily Breakdown2026-04-15:335,647 webhooks, 88 companies active2026-04-16: 671,679 webhooks, 88 companies active2026-04-17: 58,351 webhooks, 68 companies active| Company Details2026-04-15 to2026-04-173672026-04-15 to 2026-04-1732.0 days ago1,065,677355,225.6789Company 367 (Sensat - 459)Total Webhooks: 796Days Active: 3/3Daily Average: 265.33company (114 total, avg: 38)association_change: 92 total, avg: 46, active: 2 dayscreation: 3 total, avg: 1.5, active: 2 daysproperty_change: 19 total, avg: 9.5, active: 2 daysUnique properties: 4Top properties: hubspot_owner_id(12), domain(3), name(3), phone(1)deal (164 total, avg: 54.67)property_change: 164 total, avg: 54.67, active: 3 daysUnique properties: 8Top properties: notes_last_updated(134), closedate(7), dealstage(5), hs_deal_stage_probability(5), hs_manual_forecast_category(5)contact (518 total, avg: 172.67)property_change:390 total, avg: 130, active: 3 daysUnique properties: 9Top properties: hubspot_owner_id(186), firstname(35), email(35),associatedcompanyid(33), country(33)creation: 36 total, avg: 18, active: 2 daysassociation_change: 92 total, avg: 46, active: 2 daysroote67e84f80b9d1:/home/jiminny# |ec2-user@ip-10-20-......
|
NULL
|
|
42817
|
913
|
37
|
2026-04-17T07:39:15.355626+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411555355_m2.jpg...
|
PhpStorm
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistory BookmarksProfilesToolsW FirefoxFileEoitViewHistory BookmarksProfilesToolsWindow HelpPlatform Sprint 2 Q2 - Platform Te[SRD-6793] Les Mills activity type:® Problem loading pageSymfony|Component\Debug\ExcerCloudWatch | us-east-2Z Configure SSH access to multiple@ Console Home | Console Home | elNew Tab+ New Tabus-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logsV2:logs-insights$3FqueryDetail$3D~(end~0~start~-604800~timeType~'RELATIVE~tz~'UTC~unit~'seconds~editorString-aws• search[Option+5] ©Elastic Container ServiceCloudWatch > Logs InsightsG 53# CodeDeployCo CloudWatchElastiCacheKo:) Aurora and RDSDộl Amazon OpenSearch Ser...CloudFrontE MediaLive- C@ meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.com• Query definition InfoQuery scopeLou crous lidllleLog groupsSelect up to 50 log groupsProperty selectorworkerClear all470346795945E Show more chosen log groups (+25)fields @timestamp, @message, @logStream, @logI filter @message like /3364459/filter @message not like /Analytic/ | filter @message not like /Send/mutericmessage not like/wedhook/Tilter cmessage not like /Meetingbot/• LImit 10006# Backend Chapter • nowA100% CS•8 • Fri 17 Apr 10:39:14United States (Ohio) ~Account ID: 4103-4619-5943PROD]2 Start tailindLookup tablesLoas ins ants orY*L Query generator@ FieldsRun queryCancel• Completed. Query executed for 26 log groups. ®Schedule queryLogs (428)Patterns (5)VisualizationLogs (428)D Saved and sample queriesHistoryPop out this videoHide histogram04/17elog410346195943: php-app410346195943:php-app470340795943:010-001410346195943:php-app410346195943:php-app410540145543:010-000470340795943:010-001410346195943:php-app410346195943:php-app410346195943:php-app410346195943:php-app203Nikolay Nikolov04/1004/1004/10|04/1104/1104/1104/1104/1204/12Q Filter table results (case insensitive)...10:39 AM | Backend Chaptereclmestant• 1 2026-04-16T20:29:05.288Z• < <0Lb-04-10110:49:21.9544• 3 <026-04-16116:29:21.9344• 4 2026-04-16T16:29:21.932Z• 5 2026-04-16T12:26:44.094Z• 6 2026-04-16T12:26:44.093Z• 7 2026-04-16T12:26:44.092Z• 8 2026-04-16T12:26:40.009Z• 9 2026-04-16T12:26:40.009Z• 16 <026-04-16112:26:40.00/L• 11 2026-04-16T11:44:13.330ZCloudShellreedbackemessace®LogStream10.30.172.163 - - [16/Apr/2026:20:29:05 +0000] 200 "GET /index.php/... php-app/php-app/6c7993d0e6814e478a652befada37c14 L10.30.38.8 - - [16/Apr/2026:16:29:21 +0000] 404 "GET /api/v1/get-ac... php-app/php-app/f2dc7efdb47141748a69327ebb9d90dc L2- - 16/Apr/2026:16:29:21 +0000 "GET /index.php?appId=38484&portalId... php-app/php-app/f2dc7efdb4714f748a69327ebb9d90dc LNOTICE: PHP message: [2026-04-16 16:29:21] production. INFO: [GetAcc...php-app/php-app/f2dc7efdb4714f748a69327ebb9d90dc L?- - 16/Apr/2026:12:26:44 +0000 "GET /index.php?appId=38484&portalId... php-app/php-app/0d1f6209b8154f86b81acc932e95deb9 L10.30.172.163 - - [16/Apr/2026:12:26:44 +0000] 404 "GET /api/v1/get... php-app/php-app/Od1f6209b8154f86b81acc932e95deb9 LNOTICE: PHP message: [2026-04-16 12:26:44] production. INFO: [GetAc... php-app/php-app/0d1f6209b8154f86b81acc932e95deb9 L210.30.98.28 - - [16/Apr/2026:12:26:40 +0000] 404 "GET /api/v1/get-a...php-app/php-app/9b5675687af240f5a35db483a751c030 L- - 16/Apr/2026:12:26:39 +0000 "GET /index.php?appId=38484&portalId..php-app/php-app/9b5675687af240f5a35db483a751c030 LNOTICE: PHP message: [2026-04-16 12:26:40] production. INFO: [GetAcc... php-app/php-app/9b5675687af240f5a35db483a751c030 L10.30.38.8 - - [16/Apr/2026:11:44:13 +0000] 404 "GET /api/v1/get-ac... php-app/php-app/1ae5d5d18ddO4e699bb44ea076fa41e9 L9 2026, Amazon Web Services, Inc, or its arliates.PrivacyTermscookie preterences...
|
NULL
|
3851242437469564226
|
NULL
|
app_switch
|
ocr
|
NULL
|
FirefoxFileEoitViewHistory BookmarksProfilesToolsW FirefoxFileEoitViewHistory BookmarksProfilesToolsWindow HelpPlatform Sprint 2 Q2 - Platform Te[SRD-6793] Les Mills activity type:® Problem loading pageSymfony|Component\Debug\ExcerCloudWatch | us-east-2Z Configure SSH access to multiple@ Console Home | Console Home | elNew Tab+ New Tabus-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logsV2:logs-insights$3FqueryDetail$3D~(end~0~start~-604800~timeType~'RELATIVE~tz~'UTC~unit~'seconds~editorString-aws• search[Option+5] ©Elastic Container ServiceCloudWatch > Logs InsightsG 53# CodeDeployCo CloudWatchElastiCacheKo:) Aurora and RDSDộl Amazon OpenSearch Ser...CloudFrontE MediaLive- C@ meet.google.com/gjc-ikxu-wxu?authuser=lukas.kovalik%40jiminny.com• Query definition InfoQuery scopeLou crous lidllleLog groupsSelect up to 50 log groupsProperty selectorworkerClear all470346795945E Show more chosen log groups (+25)fields @timestamp, @message, @logStream, @logI filter @message like /3364459/filter @message not like /Analytic/ | filter @message not like /Send/mutericmessage not like/wedhook/Tilter cmessage not like /Meetingbot/• LImit 10006# Backend Chapter • nowA100% CS•8 • Fri 17 Apr 10:39:14United States (Ohio) ~Account ID: 4103-4619-5943PROD]2 Start tailindLookup tablesLoas ins ants orY*L Query generator@ FieldsRun queryCancel• Completed. Query executed for 26 log groups. ®Schedule queryLogs (428)Patterns (5)VisualizationLogs (428)D Saved and sample queriesHistoryPop out this videoHide histogram04/17elog410346195943: php-app410346195943:php-app470340795943:010-001410346195943:php-app410346195943:php-app410540145543:010-000470340795943:010-001410346195943:php-app410346195943:php-app410346195943:php-app410346195943:php-app203Nikolay Nikolov04/1004/1004/10|04/1104/1104/1104/1104/1204/12Q Filter table results (case insensitive)...10:39 AM | Backend Chaptereclmestant• 1 2026-04-16T20:29:05.288Z• < <0Lb-04-10110:49:21.9544• 3 <026-04-16116:29:21.9344• 4 2026-04-16T16:29:21.932Z• 5 2026-04-16T12:26:44.094Z• 6 2026-04-16T12:26:44.093Z• 7 2026-04-16T12:26:44.092Z• 8 2026-04-16T12:26:40.009Z• 9 2026-04-16T12:26:40.009Z• 16 <026-04-16112:26:40.00/L• 11 2026-04-16T11:44:13.330ZCloudShellreedbackemessace®LogStream10.30.172.163 - - [16/Apr/2026:20:29:05 +0000] 200 "GET /index.php/... php-app/php-app/6c7993d0e6814e478a652befada37c14 L10.30.38.8 - - [16/Apr/2026:16:29:21 +0000] 404 "GET /api/v1/get-ac... php-app/php-app/f2dc7efdb47141748a69327ebb9d90dc L2- - 16/Apr/2026:16:29:21 +0000 "GET /index.php?appId=38484&portalId... php-app/php-app/f2dc7efdb4714f748a69327ebb9d90dc LNOTICE: PHP message: [2026-04-16 16:29:21] production. INFO: [GetAcc...php-app/php-app/f2dc7efdb4714f748a69327ebb9d90dc L?- - 16/Apr/2026:12:26:44 +0000 "GET /index.php?appId=38484&portalId... php-app/php-app/0d1f6209b8154f86b81acc932e95deb9 L10.30.172.163 - - [16/Apr/2026:12:26:44 +0000] 404 "GET /api/v1/get... php-app/php-app/Od1f6209b8154f86b81acc932e95deb9 LNOTICE: PHP message: [2026-04-16 12:26:44] production. INFO: [GetAc... php-app/php-app/0d1f6209b8154f86b81acc932e95deb9 L210.30.98.28 - - [16/Apr/2026:12:26:40 +0000] 404 "GET /api/v1/get-a...php-app/php-app/9b5675687af240f5a35db483a751c030 L- - 16/Apr/2026:12:26:39 +0000 "GET /index.php?appId=38484&portalId..php-app/php-app/9b5675687af240f5a35db483a751c030 LNOTICE: PHP message: [2026-04-16 12:26:40] production. INFO: [GetAcc... php-app/php-app/9b5675687af240f5a35db483a751c030 L10.30.38.8 - - [16/Apr/2026:11:44:13 +0000] 404 "GET /api/v1/get-ac... php-app/php-app/1ae5d5d18ddO4e699bb44ea076fa41e9 L9 2026, Amazon Web Services, Inc, or its arliates.PrivacyTermscookie preterences...
|
NULL
|