|
81442
|
2169
|
13
|
2026-04-25T16:25:57.870391+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-25/1777 /Users/lukas/.screenpipe/data/data/2026-04-25/1777134357870_m2.jpg...
|
Firefox
|
DXP4800PLUS-B5F8 — Personal
|
True
|
nas.lakylak.xyz/desktop/#/
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox (7) - [EMAIL] - Gmail
(56) DXP4800PLUS-B5F8
Inbox (7) - [EMAIL] - Gmail
(56) Inbox | [EMAIL] | Proton Mail
Welcome back
Welcome back
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
Gitea Official Website
Gitea Official Website
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
New Tab
New Tab
MikroTik · CRS304-4XG-IN
MikroTik · CRS304-4XG-IN
New Tab
Customize sidebar
Open Le Chat Mistral (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
753
B/s
582
B/s
Files
Control Panel
Storage
App Center
Logs
Support
Task Manager
Universal Search
Music
Cloud Drives
Theater
Photos
Online Office
TextEdit
Virtual Machine
Downloads
DLNA
File Version Explorer
Security
Jellyfin-HT
SAN Manager
Vault
Snapshot
Comics
Sync & Backup
Control Panel
Search
Connection & Access
User Management
File Service
Device Connection
Domain/LDAP
Terminal
General
Hardware & Power
Time & Language
Network
Security
Indexing Service
Service
About
Update & Restore
Files
Personal Folder
Shared Folder
User Folder
Tag
Recycle Bin
Shared Folder
Shared Folder
Please enter
...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.03673537,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXRadioButton","text":"Inbox (7) - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.03856383,"top":0.0518755,"width":0.03656915,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"(56) Inbox | kovaliklukas@proton.me | Proton Mail","depth":4,"bounds":{"left":0.07513298,"top":0.0518755,"width":0.03673537,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Welcome back","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Welcome back","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.025265958,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.26263297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Today's Deals","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today's Deals","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.024102394,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"architecture - screenpipe docs","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"architecture - screenpipe docs","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.053523935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Code works better when you stop treating it like a machine - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Code works better when you stop treating it like a machine - kovaliklukas@gmail.com - Gmail","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.1747008,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.2585794,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.037898935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.013297873,"top":0.30247405,"width":0.040724736,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Platform","depth":4,"bounds":{"left":0.0,"top":0.3567438,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Platform","depth":5,"bounds":{"left":0.013297873,"top":0.367917,"width":0.027925532,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":4,"bounds":{"left":0.0,"top":0.38946527,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":5,"bounds":{"left":0.013297873,"top":0.40063846,"width":0.09790558,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":4,"bounds":{"left":0.0,"top":0.42218676,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":5,"bounds":{"left":0.013297873,"top":0.43335995,"width":0.22556517,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":4,"bounds":{"left":0.0,"top":0.45490822,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":5,"bounds":{"left":0.013297873,"top":0.4660814,"width":0.08826463,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.0,"top":0.48762968,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - kovaliklukas@gmail.com - Gmail","depth":5,"bounds":{"left":0.013297873,"top":0.49880287,"width":0.28075132,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Gitea Official Website","depth":4,"bounds":{"left":0.0,"top":0.5203512,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gitea Official Website","depth":5,"bounds":{"left":0.013297873,"top":0.53152436,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea","depth":4,"bounds":{"left":0.0,"top":0.55307263,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea","depth":5,"bounds":{"left":0.013297873,"top":0.5642458,"width":0.10555186,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.5857941,"width":0.113696806,"height":0.032721467},"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.013297873,"top":0.5969673,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"MikroTik · CRS304-4XG-IN","depth":4,"bounds":{"left":0.0,"top":0.61851555,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"MikroTik · CRS304-4XG-IN","depth":5,"bounds":{"left":0.013297873,"top":0.62968874,"width":0.046875,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.6528332,"width":0.108211435,"height":0.025538707},"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.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Le Chat Mistral (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"753","depth":15,"bounds":{"left":0.92769283,"top":0.06264964,"width":0.005984043,"height":0.008379889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"B/s","depth":15,"bounds":{"left":0.93367684,"top":0.06304868,"width":0.004155585,"height":0.0075818035},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"582","depth":15,"bounds":{"left":0.92769283,"top":0.07222666,"width":0.005984043,"height":0.008379889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"B/s","depth":15,"bounds":{"left":0.93367684,"top":0.0726257,"width":0.004155585,"height":0.0075818035},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Files","depth":13,"bounds":{"left":0.13663563,"top":0.1707901,"width":0.009973404,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Control Panel","depth":13,"bounds":{"left":0.12749335,"top":0.2697526,"width":0.02825798,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Storage","depth":13,"bounds":{"left":0.13347739,"top":0.36871508,"width":0.016289894,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"App Center","depth":13,"bounds":{"left":0.12982048,"top":0.46767756,"width":0.023603724,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Logs","depth":13,"bounds":{"left":0.13663563,"top":0.5666401,"width":0.009973404,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Support","depth":13,"bounds":{"left":0.13347739,"top":0.66560256,"width":0.016289894,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Task Manager","depth":13,"bounds":{"left":0.12699468,"top":0.76456505,"width":0.02925532,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Universal Search","depth":13,"bounds":{"left":0.123836435,"top":0.86352754,"width":0.03557181,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Music","depth":13,"bounds":{"left":0.18334441,"top":0.1707901,"width":0.012300532,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Cloud Drives","depth":13,"bounds":{"left":0.17619681,"top":0.2697526,"width":0.026595745,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Theater","depth":13,"bounds":{"left":0.18151596,"top":0.36871508,"width":0.015957447,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Photos","depth":13,"bounds":{"left":0.18218085,"top":0.46767756,"width":0.01462766,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online Office","depth":13,"bounds":{"left":0.17603059,"top":0.5666401,"width":0.026928192,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"TextEdit","depth":13,"bounds":{"left":0.18118352,"top":0.66560256,"width":0.01662234,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Virtual Machine","depth":13,"bounds":{"left":0.17353724,"top":0.76456505,"width":0.031914894,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Downloads","depth":13,"bounds":{"left":0.17802526,"top":0.86352754,"width":0.022938829,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DLNA","depth":13,"bounds":{"left":0.23121676,"top":0.1707901,"width":0.012300532,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"File Version Explorer","depth":13,"bounds":{"left":0.2159242,"top":0.2697526,"width":0.04288564,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Security","depth":13,"bounds":{"left":0.22888963,"top":0.36871508,"width":0.016954787,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jellyfin-HT","depth":13,"bounds":{"left":0.22639628,"top":0.46767756,"width":0.021941489,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SAN Manager","depth":13,"bounds":{"left":0.22273937,"top":0.5666401,"width":0.02925532,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Vault","depth":13,"bounds":{"left":0.2322141,"top":0.66560256,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Snapshot","depth":13,"bounds":{"left":0.22755983,"top":0.76456505,"width":0.019614361,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Comics","depth":13,"bounds":{"left":0.22955452,"top":0.86352754,"width":0.015625,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync & Backup","depth":13,"bounds":{"left":0.26944813,"top":0.1707901,"width":0.03158245,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Control Panel","depth":10,"bounds":{"left":0.54787236,"top":0.19872306,"width":0.025930852,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":10,"bounds":{"left":0.7430186,"top":0.19473264,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":11,"bounds":{"left":0.7443484,"top":0.19792499,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":16,"bounds":{"left":0.50797874,"top":0.2434158,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search","depth":15,"bounds":{"left":0.5152925,"top":0.23703113,"width":0.09042553,"height":0.023942538},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Connection & Access","depth":15,"bounds":{"left":0.36801863,"top":0.2753392,"width":0.044215426,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"User Management","depth":17,"bounds":{"left":0.37084442,"top":0.34357542,"width":0.038231384,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"File Service","depth":17,"bounds":{"left":0.42303857,"top":0.34357542,"width":0.024268618,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Device Connection","depth":17,"bounds":{"left":0.4609375,"top":0.34357542,"width":0.0390625,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Domain/LDAP","depth":17,"bounds":{"left":0.51080453,"top":0.34357542,"width":0.029587766,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Terminal","depth":17,"bounds":{"left":0.56200135,"top":0.34357542,"width":0.01761968,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"General","depth":15,"bounds":{"left":0.36801863,"top":0.40782124,"width":0.01662234,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Hardware & Power","depth":17,"bounds":{"left":0.37051198,"top":0.47605747,"width":0.038896278,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Time & Language","depth":17,"bounds":{"left":0.4168883,"top":0.47605747,"width":0.03656915,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Network","depth":17,"bounds":{"left":0.47190824,"top":0.47605747,"width":0.016954787,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Security","depth":17,"bounds":{"left":0.517121,"top":0.47605747,"width":0.016954787,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Indexing Service","depth":17,"bounds":{"left":0.55369014,"top":0.47605747,"width":0.034242023,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Service","depth":15,"bounds":{"left":0.36801863,"top":0.53990424,"width":0.015458777,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"About","depth":17,"bounds":{"left":0.38380983,"top":0.60814047,"width":0.012300532,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Update & Restore","depth":17,"bounds":{"left":0.4167221,"top":0.60814047,"width":0.036901597,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":10,"bounds":{"left":0.7563165,"top":0.22665602,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":11,"bounds":{"left":0.75764626,"top":0.22984837,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.5696476,"top":0.23064645,"width":0.008976064,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.37799203,"top":0.26256984,"width":0.0034906915,"height":0.007980846},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Personal Folder","depth":21,"bounds":{"left":0.38397607,"top":0.2601756,"width":0.037732713,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.37799203,"top":0.29130086,"width":0.0034906915,"height":0.007980846},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shared Folder","depth":21,"bounds":{"left":0.38397607,"top":0.28890663,"width":0.033909574,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.37799203,"top":0.3200319,"width":0.0034906915,"height":0.007980846},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"User Folder","depth":21,"bounds":{"left":0.38397607,"top":0.31763768,"width":0.028424202,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.37799203,"top":0.34876296,"width":0.0034906915,"height":0.007980846},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tag","depth":21,"bounds":{"left":0.38397607,"top":0.3463687,"width":0.010472074,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.3773271,"top":0.82521945,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recycle Bin","depth":17,"bounds":{"left":0.38663563,"top":0.82681566,"width":0.024601065,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":17,"bounds":{"left":0.4582779,"top":0.26935354,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":19,"bounds":{"left":0.46126994,"top":0.27653632,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":17,"bounds":{"left":0.46891624,"top":0.26935354,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":19,"bounds":{"left":0.47190824,"top":0.27653632,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":18,"bounds":{"left":0.48354387,"top":0.26935354,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":20,"bounds":{"left":0.4865359,"top":0.27653632,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shared Folder","depth":21,"bounds":{"left":0.501496,"top":0.27573824,"width":0.029587766,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shared Folder","depth":21,"bounds":{"left":0.501496,"top":0.27573824,"width":0.029587766,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.70013297,"top":0.27334398,"width":0.00731383,"height":0.017956903},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Please enter","depth":19,"bounds":{"left":0.71143615,"top":0.27015164,"width":0.04454787,"height":0.023942538},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"","depth":18,"bounds":{"left":0.45794547,"top":0.30367118,"width":0.011303191,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":20,"bounds":{"left":0.46126994,"top":0.31085396,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":18,"bounds":{"left":0.47190824,"top":0.30367118,"width":0.011303191,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":20,"bounds":{"left":0.47523272,"top":0.31085396,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":17,"bounds":{"left":0.68916225,"top":0.30367118,"width":0.011303191,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":19,"bounds":{"left":0.6924867,"top":0.31085396,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":17,"bounds":{"left":0.703125,"top":0.30367118,"width":0.011303191,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":19,"bounds":{"left":0.70644945,"top":0.31085396,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":17,"bounds":{"left":0.71708775,"top":0.30367118,"width":0.011303191,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":19,"bounds":{"left":0.72041225,"top":0.31085396,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":17,"bounds":{"left":0.73105055,"top":0.30367118,"width":0.011303191,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
8940209950148557543
|
5257177690907106063
|
visual_change
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox (7) - [EMAIL] - Gmail
(56) DXP4800PLUS-B5F8
Inbox (7) - [EMAIL] - Gmail
(56) Inbox | [EMAIL] | Proton Mail
Welcome back
Welcome back
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
Gitea Official Website
Gitea Official Website
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
New Tab
New Tab
MikroTik · CRS304-4XG-IN
MikroTik · CRS304-4XG-IN
New Tab
Customize sidebar
Open Le Chat Mistral (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
753
B/s
582
B/s
Files
Control Panel
Storage
App Center
Logs
Support
Task Manager
Universal Search
Music
Cloud Drives
Theater
Photos
Online Office
TextEdit
Virtual Machine
Downloads
DLNA
File Version Explorer
Security
Jellyfin-HT
SAN Manager
Vault
Snapshot
Comics
Sync & Backup
Control Panel
Search
Connection & Access
User Management
File Service
Device Connection
Domain/LDAP
Terminal
General
Hardware & Power
Time & Language
Network
Security
Indexing Service
Service
About
Update & Restore
Files
Personal Folder
Shared Folder
User Folder
Tag
Recycle Bin
Shared Folder
Shared Folder
Please enter
...
|
81440
|
|
58368
|
1254
|
50
|
2026-04-20T12:43:32.722718+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776689012722_m1.jpg...
|
PhpStorm
|
PhpStorm
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFilelEditViewHistoryBookmarksProfilesToolsW FirefoxFilelEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0Nikolay Nikolov (Presenting, annotating)100% 18• Mon 20 Apr 15:43:3200 7Phiostcru86DProject vCalendar› E Conference• 0crm› E Bulhor› 0Ciose› E copper› D CrmObjectsDecorate Activity› E Dummy› Helpers~ • HubsporCAeconsDo JournalOpportunitySyncStrategyPaginationProspectSearchStrategyD ServiceTraitsOpportunitySyncTrait.php 20.04.2%SyncOrmÊntities Trait,.php 20.04.26© SyncFieidsTrait.php 23.03.26, 10.50WiteCrmTrait,php 20.04.26, M4.16, :U SyncHubspotObjectsTest.testHandleWthN...y y Test Resuitv 1 test passed 1 test total, 24ms/opt/honebrew/Celtar/php/8.3.4/bin/phpTesting started at 11:54 …..PHPUnit 11.5.5S by Sebastian BergnannaPHP 8.3.4Configuration: Wuecs/kest/afninny/app/Tine: 08:00.298, Menory: 109.50 MBThere was 1 PHPUnit test nunner warningMon 20 Ape 16:43USyncHubspotObjectsTest.testHandlSyncedAt© ImportOpportunityBatch.phpSyncContact.phpSyncOrmEnttiesTrait.phpService.phpSyncProfieOpportunities.phpclass Service extends BaseService inplenentsprivate function inportOpportunity(ScrnOata): ?0pportunityeipiut Picoaun'exception' > Sexception-›getMessage),SyncOpportunities.Job.phpSalesforce Batch Con+0 .mLet me check the syncOpportunitiesImplementation for both providers:1451 €OpportunitySyncTrait.phpD10 818 0322 ×3421):Answer: Batching in syncOpportuntSthis-9handleEntityDeletionByProviderId(Sthis->config-›opportunities(), Scrabata):Detailsreturn nult;PRSCESS_S1Z& James Granam +5public function syncContacts(Carbon Ssince, ?Carbon Sto & nutl): intXINDSfields • Sthis-›getAllFieldsAsArcay( objectType: 'contact*):1f (lin_arcay( needie "Id", Sfields,strict true) ua false) €return SsyncCount;foreach (SsSquery = 'SELECT "• rtrin(iaplode( separator: ",*, Sfields),FROM ContactTHERE LastModifiedDate > :sánceORDER BY LastModifiedDate ASC':SST9po/tunаtу)вУHubSpot (lines 66-80)0 pheltry 1foreach (Ssyncstrategy->tetchopponSbufferll - shsOpportunity:1f (count(Sbuffer) › self::BSsfContacts = Sthis->queryHandler->quecy (Squery, [Sance" ss ssunceostonsall Tomat"Tebro ThiaeSlede)):foreach (SsfContacts as SsfContact) <// Onty sync if previously inported.if (Sthis->hasContact(SsfContact(*Id'])) €Butfers 800 opportunities beforeAsk anything (XOL)Claude Opus 4.5m404p00eoomD Sotoe sorcen1451:SSymfonyUTF-8Aneliya AngelovaStefka Stoyanova2 othersNikolay Nikolov3:43 PM | [Platform] Refinement ®Lukas Kovalik41:44...
|
NULL
|
8939344565942090399
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFilelEditViewHistoryBookmarksProfilesToolsW FirefoxFilelEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0Nikolay Nikolov (Presenting, annotating)100% 18• Mon 20 Apr 15:43:3200 7Phiostcru86DProject vCalendar› E Conference• 0crm› E Bulhor› 0Ciose› E copper› D CrmObjectsDecorate Activity› E Dummy› Helpers~ • HubsporCAeconsDo JournalOpportunitySyncStrategyPaginationProspectSearchStrategyD ServiceTraitsOpportunitySyncTrait.php 20.04.2%SyncOrmÊntities Trait,.php 20.04.26© SyncFieidsTrait.php 23.03.26, 10.50WiteCrmTrait,php 20.04.26, M4.16, :U SyncHubspotObjectsTest.testHandleWthN...y y Test Resuitv 1 test passed 1 test total, 24ms/opt/honebrew/Celtar/php/8.3.4/bin/phpTesting started at 11:54 …..PHPUnit 11.5.5S by Sebastian BergnannaPHP 8.3.4Configuration: Wuecs/kest/afninny/app/Tine: 08:00.298, Menory: 109.50 MBThere was 1 PHPUnit test nunner warningMon 20 Ape 16:43USyncHubspotObjectsTest.testHandlSyncedAt© ImportOpportunityBatch.phpSyncContact.phpSyncOrmEnttiesTrait.phpService.phpSyncProfieOpportunities.phpclass Service extends BaseService inplenentsprivate function inportOpportunity(ScrnOata): ?0pportunityeipiut Picoaun'exception' > Sexception-›getMessage),SyncOpportunities.Job.phpSalesforce Batch Con+0 .mLet me check the syncOpportunitiesImplementation for both providers:1451 €OpportunitySyncTrait.phpD10 818 0322 ×3421):Answer: Batching in syncOpportuntSthis-9handleEntityDeletionByProviderId(Sthis->config-›opportunities(), Scrabata):Detailsreturn nult;PRSCESS_S1Z& James Granam +5public function syncContacts(Carbon Ssince, ?Carbon Sto & nutl): intXINDSfields • Sthis-›getAllFieldsAsArcay( objectType: 'contact*):1f (lin_arcay( needie "Id", Sfields,strict true) ua false) €return SsyncCount;foreach (SsSquery = 'SELECT "• rtrin(iaplode( separator: ",*, Sfields),FROM ContactTHERE LastModifiedDate > :sánceORDER BY LastModifiedDate ASC':SST9po/tunаtу)вУHubSpot (lines 66-80)0 pheltry 1foreach (Ssyncstrategy->tetchopponSbufferll - shsOpportunity:1f (count(Sbuffer) › self::BSsfContacts = Sthis->queryHandler->quecy (Squery, [Sance" ss ssunceostonsall Tomat"Tebro ThiaeSlede)):foreach (SsfContacts as SsfContact) <// Onty sync if previously inported.if (Sthis->hasContact(SsfContact(*Id'])) €Butfers 800 opportunities beforeAsk anything (XOL)Claude Opus 4.5m404p00eoomD Sotoe sorcen1451:SSymfonyUTF-8Aneliya AngelovaStefka Stoyanova2 othersNikolay Nikolov3:43 PM | [Platform] Refinement ®Lukas Kovalik41:44...
|
58366
|
|
43632
|
927
|
19
|
2026-04-17T08:15:06.736871+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776413706736_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFditViewNavigateCodelaravelRefactonToo PhpStormFileFditViewNavigateCodelaravelRefactonToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-jiminny k ~Project vc PlaybookCategoryRepository.phC PlaybookRepository.phpPlaylistActivityRepository.phpPlaylistRepository.php(C PlaylistShareRepository.php© QuestionRepository.pnpC) RoleChangeEventRepositorv.phrC RoleRepository.php(C) SearchRepository.php(C) SnapshotRepository.php(©) SocialAccountRepository.phpC StageRepository.phpC SubscriptionSetRepository.phpTaskRepository.php© leamAiContextkepository.php© leamDomainsRepository.php©leaminsightskepository.phpC) TeamRepository.phpTnemekepository.pnpc) TimezoneRepositorv.phpC) TopicRepository.phpС) TopicTriagerRepository.phpC TrackRepository.php© TranscriptionModelLocaleReposC TranscriptionRepository.php© TranscriptionSummaryRepositorUserRepository.php© VocabularyRepository.php› M7 Rules• M Services> _ Activity> _AReports› _ Avatar> D Calendar› _ Conferencev D Crm1 Bullhorn_ Close_ CopperCrmooiectsDecorateActivityDummy→ Helpers_ HubspotD AccountSyncStrategy› Actions_ ContactSyncStrategy• UDTOWFields› D JournalM MetadataOpportunitySyncStrategyM PaginationProspectSearchStrateayRedisServiceTraitsT OpportunitySyncTrait.cT SyncCrmEntitiesTrait.pT SyncFieldsTrait.phpC AutomatedReportsService.phpC) SendReportJob.phpC SendReportMailJob.php(C) ReportController.phpG TokenBuilder.phpC TeamSetupController.phppnp apl.onp© Filesystem.phpC AskJiminnyReportsController.php(c leam.onoc CrealenelaAcuiviyevent.ono© TrackProviderInstalledEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.phpC RequestGenerateAskJiminnyReportJob.phpC RequestGenerateReportJob.php(©) SyncOpportunity.phpOpportunitySyncTrait.phpC) Opportunity.phpC OpportunityUpdated.phpC OpportunityStageUpdated.phpC EventServiceProvider.phpOpoorunityrenaingAlAnalysisAnerstagechangea.ono© RunOpportunityAlAnalysis.php© ProcessAiAutomationAnalysisResults.phpwHasattributes.oneC AutomatedRenorResult.nhnC) Automateakeportonp"podcast_audio_url"x § Cc W .*o resuitsT. Ừ:Trart uooortunttsvncirardprocecced upporzunitysyncscracegykesolver sopporcunitysyncscracegykesouverh44 GT >114113114115116ol11/11911251261271281561331341351361371381391461411142143procecteо сrnспссукероsсогу фсеиспссукерозісогу?usadesoroceccea beaurielasservice saeatrielasservicers usaeesprivate ?array scachedclosedbealStages = nuul;3 usagesprivate array $cachedBusinessProcesses = []:3 usagesprivate array scachedstages = lJ:public function syncOpportunities(array $parameters, ?string $strategy = null): intí...Tusageprivate function handleSyncException Throwable se, array $parameters): void ..../*** dinherztdoc*/public function syncOppestunity(string $crmId): ?Opportunityscrategy = suhis->opporcunlcysyncstrategykesolver->resouveфchis->contig,strategy: OpportunitySyncStrategyResolver::SINGLE_SYNC_OPPORTUNITY_STRATEGY,Sparameters ='confiq" => Sthis->confia.'crm_1d = scrmid,Cry 1it ! sscrategy instanceot Hubspocsinglesyncscracegy) iunrow new InvauoArounentexcerron message"scrareoy must ov nuospotsinolesyncscrateavo.$hsOpportunity = $strategy->fetchOpportunity($parameters);catch @HubSpot Client Crm Deals ApiException Sel 1sthis->Logger->info('lsthis->getDisplayNameo."Opportunity not found','teamid'= $this->team->getUuidOreason' = se->gethessage)return nulliHelper code will nelp IDe to understand your Laravel app code. #/ Generate // Don't show Anymore (today 8:59)A32 X,2 X,19 л= custom.log= laravel.logL SF fiminny@localhostfr scratch 1.isonV connect.vueV Onboard.vuec HS_local Liminny@localhost¿ console lEUlXiib crm_configurations EU]& console PRoD& console SlAGiNG155015511552-155315541555155715581559T15601561— -00g— 15631564_156515661567=115691570157115721573=1574157515/61157/1579158015811582158315841585158158715841590—10Y115921593— 159415951596159715981599—1600Ix. Aulo vma iminny vselect * from c026 49 422 ×3 ~, 103 ^whene c.erm contiaunation 10 = s74 onden nv c.ulSELECT * FROM participants where activity_id =oeuee* -rom oaru cloants where actvt o sscLee* rrom acuuiry sunmary Loos wnere actvDELEx KUMIactivities WHERE uuid to bind'c7deSELECT * FROMIactivities WHERE uuid to bin('2eonseLect x Tromselect * frorcrm_profiles where crm_configuratopportunities where crm confiquranselect * froraccounts where crm_confiquration iselect * from contacts where crm_configuration# owner 13236 525/85080# contact 116779180 6655874418561activity* contact ?19247565 1427255477001-ashdsupportconoany 4uo1ss 4750090904# deal 7100953 410150124747BELELICONCAT(u.id, CASE WHEN u.id = t.owner_id THu.email.sa.*t.owner id FROM social accounts saJOIN users u on U.id = sa.sociable idJOIN teams tl..n<->I: on t.1d = U.team_1dWHERE U.team_1d = 400 and sa.provider = 'hubspoiiselect * trom reatures,se ect * tron vean teatures where teature 1o ? 41select x trol reals were o = ooo. * owner.1olselect * from crm confiqurations where id = 47zSELECT * FROM users WHERE id = 18101;SELECTu.email,CONCAT(u.id, CASE WHEN u.id = t.owner_id THEsa.*t.owner_1d FROM soclal_accounts saJOIN users u on u.ld = sa.soclable_1dNureansI.n<→>I: on t.1d = U.ceam_1dWHERE u.team_id = 556 and sa.provider = 'integraselect x trom opporcunicles where 10- 70745471select * from stages where team_id = 459;select * from teams where id = 459:SELECTCONCAT(u.id, CASE WHEN U.id = t.owner_id TA.U.emall,sa.*t.owner_1d FROM soclal_ accounts saJUvusers u on urid z sasocaole lolJUiNrealnsni<o> on tl z U.teai lolWHERE u.team_id = 459 and sa.provider =Backend Chapter • 15 m left100% z• Fri 17 Apr 11:15:06AutomatedRenortsCommandTestCascadeAutomated Report RetInvestigating HubSpoComponent\AlAutomation\Listeners\PendingAnalysis\OpportunityPendingAlAnalysisAtterStageChanged:], is executed. Can it update the opportunityrast context opportunityrendingAiAnalysisatlerstagecnanged listener class In 4.2056a Fast Context FillCrmField ValuesService execute - does it update the opportunity mod..lll LorsHere's the full execution chain:What OpportunityPendingAiAnalysisAfterStageChanged doesIt does NOT directly update the opportunity. It's a trigger orchestration step. Here's the full chain:=xecution-owUpportunityscaceupuared event Tirea- Upportun1cyPenalngA1AnalysisArterstaqechanged::handle•Loac opportuniry tron Db2 check team has AT CRM FILLING teature enabled3. Find matching CRM templates for the opportunity4. Collect applicable template field IDs5. Dispatch RunOpportunityAiAnalysis event (queued)- Kunupportun1tyA1Analys1sL1scener::handle- FillCrmFieldValuesService: : execute()- U0portunaVermrlelohandler..execure1. Calls Prophet Al to extract field values trom deal2. Saves CrmTemplateRun records3. Dispatches AiAutomationAnalysisReadyJob (queued)- FrocessAlAucomaclonana lysiskesulcs→ calls service->syncOpportunity to refresh local data- caLls UpdatecrmFleldAction:: executet)→ writes Al-generated values back to CRM (HubSpot)Does "Uocare the ooponuniwrYes, indirectly and asynchronously, but not stage_id - it writes Al-generated CRM field values (notstace. specllcallyProcessAiAutomationAnalysisResults::qetTarqet0biect() calls service->syncOpportunity -ProcessAlAutomat1onAna Lysiskesults.php: 150 - wnich re-syncs the opportunity trom Hubspot,potentially updating stage id and other fields as a side effectUpdateCrmFieldAction:: syncRemoteRecord( also calls syncOpportunity after writing - UpdateCrmFie dAction.nhn:1.66Key gates — it returns early (no-op) if:1. Opportunity not tound2. Team not found3. Team doesn't have AI CRM FILLING feature flag4. No CRM templates match the opportunity5. Templates exist but have no active fieldsRe lation to vour importStages IssueThe syncOpportunity() calls inside ProcessAiAutomationAnalysisResults go through the normalopportunity syne patn, whien calls resouvestade → polentally inportstades. oo this Al auromationchain is a possible additional trigger for the repeated importStages calls you're seeing, separate tromthe scheduled sync jobs.C1l -Ask anything (&+L)<> CodeClaude Sonnet 4.6wWinasun leams116.29uir-oCa 4 spaces...
|
NULL
|
8939258003074740750
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileFditViewNavigateCodelaravelRefactonToo PhpStormFileFditViewNavigateCodelaravelRefactonToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-jiminny k ~Project vc PlaybookCategoryRepository.phC PlaybookRepository.phpPlaylistActivityRepository.phpPlaylistRepository.php(C PlaylistShareRepository.php© QuestionRepository.pnpC) RoleChangeEventRepositorv.phrC RoleRepository.php(C) SearchRepository.php(C) SnapshotRepository.php(©) SocialAccountRepository.phpC StageRepository.phpC SubscriptionSetRepository.phpTaskRepository.php© leamAiContextkepository.php© leamDomainsRepository.php©leaminsightskepository.phpC) TeamRepository.phpTnemekepository.pnpc) TimezoneRepositorv.phpC) TopicRepository.phpС) TopicTriagerRepository.phpC TrackRepository.php© TranscriptionModelLocaleReposC TranscriptionRepository.php© TranscriptionSummaryRepositorUserRepository.php© VocabularyRepository.php› M7 Rules• M Services> _ Activity> _AReports› _ Avatar> D Calendar› _ Conferencev D Crm1 Bullhorn_ Close_ CopperCrmooiectsDecorateActivityDummy→ Helpers_ HubspotD AccountSyncStrategy› Actions_ ContactSyncStrategy• UDTOWFields› D JournalM MetadataOpportunitySyncStrategyM PaginationProspectSearchStrateayRedisServiceTraitsT OpportunitySyncTrait.cT SyncCrmEntitiesTrait.pT SyncFieldsTrait.phpC AutomatedReportsService.phpC) SendReportJob.phpC SendReportMailJob.php(C) ReportController.phpG TokenBuilder.phpC TeamSetupController.phppnp apl.onp© Filesystem.phpC AskJiminnyReportsController.php(c leam.onoc CrealenelaAcuiviyevent.ono© TrackProviderInstalledEvent.php© UserPilotActivityListener.php© ActivityLogged.php© AutomatedReportsCallbackService.phpC RequestGenerateAskJiminnyReportJob.phpC RequestGenerateReportJob.php(©) SyncOpportunity.phpOpportunitySyncTrait.phpC) Opportunity.phpC OpportunityUpdated.phpC OpportunityStageUpdated.phpC EventServiceProvider.phpOpoorunityrenaingAlAnalysisAnerstagechangea.ono© RunOpportunityAlAnalysis.php© ProcessAiAutomationAnalysisResults.phpwHasattributes.oneC AutomatedRenorResult.nhnC) Automateakeportonp"podcast_audio_url"x § Cc W .*o resuitsT. Ừ:Trart uooortunttsvncirardprocecced upporzunitysyncscracegykesolver sopporcunitysyncscracegykesouverh44 GT >114113114115116ol11/11911251261271281561331341351361371381391461411142143procecteо сrnспссукероsсогу фсеиспссукерозісогу?usadesoroceccea beaurielasservice saeatrielasservicers usaeesprivate ?array scachedclosedbealStages = nuul;3 usagesprivate array $cachedBusinessProcesses = []:3 usagesprivate array scachedstages = lJ:public function syncOpportunities(array $parameters, ?string $strategy = null): intí...Tusageprivate function handleSyncException Throwable se, array $parameters): void ..../*** dinherztdoc*/public function syncOppestunity(string $crmId): ?Opportunityscrategy = suhis->opporcunlcysyncstrategykesolver->resouveфchis->contig,strategy: OpportunitySyncStrategyResolver::SINGLE_SYNC_OPPORTUNITY_STRATEGY,Sparameters ='confiq" => Sthis->confia.'crm_1d = scrmid,Cry 1it ! sscrategy instanceot Hubspocsinglesyncscracegy) iunrow new InvauoArounentexcerron message"scrareoy must ov nuospotsinolesyncscrateavo.$hsOpportunity = $strategy->fetchOpportunity($parameters);catch @HubSpot Client Crm Deals ApiException Sel 1sthis->Logger->info('lsthis->getDisplayNameo."Opportunity not found','teamid'= $this->team->getUuidOreason' = se->gethessage)return nulliHelper code will nelp IDe to understand your Laravel app code. #/ Generate // Don't show Anymore (today 8:59)A32 X,2 X,19 л= custom.log= laravel.logL SF fiminny@localhostfr scratch 1.isonV connect.vueV Onboard.vuec HS_local Liminny@localhost¿ console lEUlXiib crm_configurations EU]& console PRoD& console SlAGiNG155015511552-155315541555155715581559T15601561— -00g— 15631564_156515661567=115691570157115721573=1574157515/61157/1579158015811582158315841585158158715841590—10Y115921593— 159415951596159715981599—1600Ix. Aulo vma iminny vselect * from c026 49 422 ×3 ~, 103 ^whene c.erm contiaunation 10 = s74 onden nv c.ulSELECT * FROM participants where activity_id =oeuee* -rom oaru cloants where actvt o sscLee* rrom acuuiry sunmary Loos wnere actvDELEx KUMIactivities WHERE uuid to bind'c7deSELECT * FROMIactivities WHERE uuid to bin('2eonseLect x Tromselect * frorcrm_profiles where crm_configuratopportunities where crm confiquranselect * froraccounts where crm_confiquration iselect * from contacts where crm_configuration# owner 13236 525/85080# contact 116779180 6655874418561activity* contact ?19247565 1427255477001-ashdsupportconoany 4uo1ss 4750090904# deal 7100953 410150124747BELELICONCAT(u.id, CASE WHEN u.id = t.owner_id THu.email.sa.*t.owner id FROM social accounts saJOIN users u on U.id = sa.sociable idJOIN teams tl..n<->I: on t.1d = U.team_1dWHERE U.team_1d = 400 and sa.provider = 'hubspoiiselect * trom reatures,se ect * tron vean teatures where teature 1o ? 41select x trol reals were o = ooo. * owner.1olselect * from crm confiqurations where id = 47zSELECT * FROM users WHERE id = 18101;SELECTu.email,CONCAT(u.id, CASE WHEN u.id = t.owner_id THEsa.*t.owner_1d FROM soclal_accounts saJOIN users u on u.ld = sa.soclable_1dNureansI.n<→>I: on t.1d = U.ceam_1dWHERE u.team_id = 556 and sa.provider = 'integraselect x trom opporcunicles where 10- 70745471select * from stages where team_id = 459;select * from teams where id = 459:SELECTCONCAT(u.id, CASE WHEN U.id = t.owner_id TA.U.emall,sa.*t.owner_1d FROM soclal_ accounts saJUvusers u on urid z sasocaole lolJUiNrealnsni<o> on tl z U.teai lolWHERE u.team_id = 459 and sa.provider =Backend Chapter • 15 m left100% z• Fri 17 Apr 11:15:06AutomatedRenortsCommandTestCascadeAutomated Report RetInvestigating HubSpoComponent\AlAutomation\Listeners\PendingAnalysis\OpportunityPendingAlAnalysisAtterStageChanged:], is executed. Can it update the opportunityrast context opportunityrendingAiAnalysisatlerstagecnanged listener class In 4.2056a Fast Context FillCrmField ValuesService execute - does it update the opportunity mod..lll LorsHere's the full execution chain:What OpportunityPendingAiAnalysisAfterStageChanged doesIt does NOT directly update the opportunity. It's a trigger orchestration step. Here's the full chain:=xecution-owUpportunityscaceupuared event Tirea- Upportun1cyPenalngA1AnalysisArterstaqechanged::handle•Loac opportuniry tron Db2 check team has AT CRM FILLING teature enabled3. Find matching CRM templates for the opportunity4. Collect applicable template field IDs5. Dispatch RunOpportunityAiAnalysis event (queued)- Kunupportun1tyA1Analys1sL1scener::handle- FillCrmFieldValuesService: : execute()- U0portunaVermrlelohandler..execure1. Calls Prophet Al to extract field values trom deal2. Saves CrmTemplateRun records3. Dispatches AiAutomationAnalysisReadyJob (queued)- FrocessAlAucomaclonana lysiskesulcs→ calls service->syncOpportunity to refresh local data- caLls UpdatecrmFleldAction:: executet)→ writes Al-generated values back to CRM (HubSpot)Does "Uocare the ooponuniwrYes, indirectly and asynchronously, but not stage_id - it writes Al-generated CRM field values (notstace. specllcallyProcessAiAutomationAnalysisResults::qetTarqet0biect() calls service->syncOpportunity -ProcessAlAutomat1onAna Lysiskesults.php: 150 - wnich re-syncs the opportunity trom Hubspot,potentially updating stage id and other fields as a side effectUpdateCrmFieldAction:: syncRemoteRecord( also calls syncOpportunity after writing - UpdateCrmFie dAction.nhn:1.66Key gates — it returns early (no-op) if:1. Opportunity not tound2. Team not found3. Team doesn't have AI CRM FILLING feature flag4. No CRM templates match the opportunity5. Templates exist but have no active fieldsRe lation to vour importStages IssueThe syncOpportunity() calls inside ProcessAiAutomationAnalysisResults go through the normalopportunity syne patn, whien calls resouvestade → polentally inportstades. oo this Al auromationchain is a possible additional trigger for the repeated importStages calls you're seeing, separate tromthe scheduled sync jobs.C1l -Ask anything (&+L)<> CodeClaude Sonnet 4.6wWinasun leams116.29uir-oCa 4 spaces...
|
43630
|
|
61393
|
1324
|
15
|
2026-04-21T06:54:39.923624+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776754479923_m1.jpg...
|
Firefox
|
JY-20701 | Reschedule HubSpot Sync Objects by yalo JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/11989/changes#diff-3e9 github.com/jiminny/app/pull/11989/changes#diff-3e91b9df26f6ed49ead694c97ddcddf5f3c3e878390064d0b8849f22d54e5603...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board 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
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
Close tab
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
New Tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (21)
Security and quality
(
21
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
JY-20701 | Reschedule HubSpot Sync Objects #11989 Edit title
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
Edit title
Preview
Preview
Awaiting approval
Awaiting approval
Code
Code
Open
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
Lines changed: 949 additions & 97 deletions
Conversation (5)
Conversation
(
5
)
Commits (22)
Commits
(
22
)
Checks (3)
Checks
(
3
)
Files changed (11)
Files changed
(
11
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
JY-20701 | Reschedule HubSpot Sync Objects
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
All commits
All commits...
|
[{"role":"AXRadioButton","text [{"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":"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":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","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":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","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":"Skip to content","depth":6,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to content","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open menu","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Homepage (g then d)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"jiminny","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"app","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Search or jump to…","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to search","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chat with Copilot","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Open Copilot…","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create new...","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues(g then i)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Pull requests","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Repositories","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"You have unread notifications(g then n)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open user navigation menu","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Repository navigation","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Repository navigation","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pull requests (31)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Agents","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Agents","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Actions","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Wiki","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Wiki","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security and quality (21)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security and quality","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Important update","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Important update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Review this update","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review this update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and manage your preferences in your","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GitHub account settings","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub account settings","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dismiss banner","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"JY-20701 | Reschedule HubSpot Sync Objects #11989 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11989","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit title","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Preview","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Preview","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Awaiting approval","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Awaiting approval","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Code","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"yalokin-jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 22 commits into","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20701-reschedule-HubSpot-processing","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701-reschedule-HubSpot-processing","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 949 additions & 97 deletions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Conversation (5)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Conversation","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Commits (22)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Commits","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"22","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Checks (3)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Files changed (11)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Files changed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Pull Request Toolbar","depth":14,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pull Request Toolbar","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse file tree","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Open","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20701 | Reschedule HubSpot Sync Objects","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11989","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"All commits","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All commits","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8939013058115101623
|
-1149121750703641144
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board 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
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
Close tab
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
New Tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (21)
Security and quality
(
21
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
JY-20701 | Reschedule HubSpot Sync Objects #11989 Edit title
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
Edit title
Preview
Preview
Awaiting approval
Awaiting approval
Code
Code
Open
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
Lines changed: 949 additions & 97 deletions
Conversation (5)
Conversation
(
5
)
Commits (22)
Commits
(
22
)
Checks (3)
Checks
(
3
)
Files changed (11)
Files changed
(
11
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
JY-20701 | Reschedule HubSpot Sync Objects
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
All commits
All commits...
|
NULL
|
|
63397
|
1374
|
9
|
2026-04-21T08:58:13.216181+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776761893216_m2.jpg...
|
PhpStorm
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Find in Files
24 matches in 9 files
File mask:
*.p Find in Files
24 matches in 9 files
File mask:
*.php
*.php
Auto
*.php
Filter Search Results
Pin Window
Search History
ActivityLeadConverted
New Line
Match case
Words
Regex
Replace History
Replace
New Line
Preserve case
In Project
Module
Directory
Scope
Module
/Users/lukas/jiminny/app/app/Services/Crm/Salesforce
/Users/lukas/jiminny/app/app/Services/Crm/Salesforce
/Users/lukas/jiminny/app/app/Providers
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp
/Users/lukas/jiminny/app/app/Events/Activities/Crm
/Users/lukas/jiminny/app/app/Listeners/Playbooks
/Users/lukas/jiminny/app/app/Console/Commands/Crm
/Users/lukas/jiminny/app/app/Services/Crm
/Users/lukas/jiminny/app/app/Listeners/Activities/Coaching/UserPilot
/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot
/Users/lukas/jiminny/app/app/Listeners/Crm
/Users/lukas/jiminny/app/app/Http/Controllers
/Users/lukas/jiminny/app/app/Console/Commands/Reports
/Users/lukas/jiminny/app/app/VO/Repository/OnDemandActivitySearch
/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences/UserPilot
/Users/lukas/jiminny/app/app/Http/Controllers/Webhook
/Users/lukas/jiminny/app/resources/views/emails/reports
/Users/lukas/jiminny/app/app/Mail/Reports
/Users/lukas/jiminny/app/app/Repositories
/Users/lukas/jiminny/app/app/Http/Controllers/API/UserAutomatedReports
/Users/lukas/jiminny/app/app/Services/Kiosk/AutomatedReports
/Users/lukas/jiminny/app/app/Component/ActivitySearch/Service
/Users/lukas/jiminny/app/app/Jobs/AutomatedReports
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Salesforce
/Users/lukas/jiminny/app/routes
/Users/lukas/jiminny/app/app/Console/Commands
/Users/lukas/jiminny/app/database/migrations
/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/325d461a-c90f-430a-99d4-6ddfce0c61d7
/Users/lukas/jiminny/app/app/Http/Controllers/API/V2
/Users/lukas/jiminny/app/app/Jobs/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/DealInsights
/Users/lukas/jiminny/app/app/Policies
/Users/lukas/jiminny/app/app/Services/Crm/Helpers
/Users/lukas/jiminny/app/app/Jobs/Crm
/Users/lukas/jiminny/app/app/Events/Crm
/Users/lukas/jiminny/app/app/Models
/Users/lukas/jiminny/app/app/Listeners/Teams
/Users/lukas/jiminny/app/app/Jobs/Crm/Salesforce
/Users/lukas/jiminny/app/app
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Journal
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/ServiceTraits
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/OpportunitySyncStrategy
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Webhook
/Users/lukas/jiminny/app/storage/logs
/Users/lukas/jiminny/app
/Users/lukas/jiminny/app/app/Services/Internal
/Users/lukas/jiminny/app/app/Listeners/Transcription
/Users/lukas/jiminny/app/app/Repositories/Crm
/Users/lukas/jiminny/app/tests/Unit/Listeners/Teams
/Users/lukas/jiminny/app/app/Models/Crm
/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/91133dfa-8d71-4e12-bfb8-fec7f1afba8f
/Users/lukas/jiminny/app/app/Observers
/Users/lukas/jiminny/app/app/Services/Mail
/Users/lukas/jiminny/app/app/Console/Commands/Activities
/Users/lukas/jiminny/app/app/Console/Commands/Activities/Migrator
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/ServiceTraits
/Users/lukas/jiminny/app/app/Jobs/User
/Users/lukas/jiminny/app/app/Models/Activity
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Webhook
/Users/lukas/jiminny/app/app/Component/AiAutomation/Listeners/PendingAnalysis
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/ActivitySearch/FilterDefinition/DealInsights
/Users/lukas/jiminny/app/app/Services/Crm/DecorateActivity
/Users/lukas/jiminny/app/app/Component/Activity/Event
/Users/lukas/jiminny/app/app/Component/Sidekick
/Users/lukas/jiminny/app/app/Jobs/Activity/PushSummaryToCrm
/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences
/Users/lukas/jiminny/app/app/Listeners/Activities/Bots
/Users/lukas/jiminny/app/app/Services/RecallAI/Webhooks/Handlers
/Users/lukas/jiminny/app/app/Events/Activities/Bots
/Users/lukas/jiminny/app/app/Component/MeetingBot
/Users/lukas/jiminny/app/app/Services/Activity/RingCentral
/Users/lukas/jiminny/app/app/Http/Controllers/Webhook/Hubspot
/Users/lukas/jiminny/app/app/Services/Activity/Gmail
/Users/lukas/jiminny/app/app/Services/Crm/CrmObjects/ServiceTraits
/Users/lukas/jiminny/app/app/Jobs/Mailbox
/Users/lukas/jiminny/app/app/Console
/Users/lukas/jiminny/app/front-end/src/composables
/Users/lukas/jiminny/app/app/Console/Commands/Calendars
/Users/lukas/jiminny/app/app/Http/Controllers/API
/Users/lukas/jiminny/app/app/Http/Controllers/Internal/WebhookReceiver
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/ServiceTraits
/Users/lukas/jiminny/app/app/Component/Queue
/Users/lukas/jiminny/app/app/Console/Commands/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/Transcription/Job
/Users/lukas/jiminny/app/tests/Unit/Services/Listeners
/Users/lukas/jiminny/app/app/Services/Crm/Listeners
/Users/lukas/jiminny/app/app/Traits
/Users/lukas/jiminny/app/tests/Unit/Jobs/Crm/Hubspot
/Users/lukas/jiminny/app/tests/Unit/Services/Crm
/Users/lukas/jiminny/app/app/Services/Activity
/Users/lukas/jiminny/app/app/Services/Calendar/Command
/Users/lukas/jiminny/app/.idea/queries
/Users/lukas/jiminny/app/vendor/hubspot/api-client/codegen/Crm
/Users/lukas/jiminny/app/vendor/hubspot
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Fields
/Users/lukas/jiminny/app/app/Services/Crm/Copper
/Users/lukas/jiminny/app/app/Services/Crm/Bullhorn
/Users/lukas/jiminny/app/app/Notifications/Channels
/Users/lukas/jiminny/app/tests/Unit
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Journal
/Users/lukas/jiminny/app/app/Interactions/Settings/Teams
/Users/lukas/jiminny/app/app/Exceptions/Crm
/Users/lukas/jiminny/app/app/Exceptions
/Users/lukas/jiminny/app/vendor/hubspot/hubspot-php/src/Endpoints
/Users/lukas/jiminny/app/config
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/OpportunitySyncStrategy
/Users/lukas/jiminny/app/vendor/laravel/framework/src/Illuminate/Redis/Connections
/Users/lukas/jiminny/app/app/Http/Controllers/Settings/Teams
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Webhook/Traits
/Users/lukas/jiminny/app/vendor/laravel/framework/src/Illuminate/Broadcasting
/Users/lukas/jiminny/app/app/Component/FeatureFlags
/Users/lukas/jiminny/app/app/Component/Activity
/Users/lukas/jiminny/app/app/Component/ActivitySearch...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Find in Files","depth":1,"bounds":{"left":0.2992021,"top":0.12609737,"width":0.024601065,"height":0.013567438},"role_description":"text"},{"role":"AXStaticText","text":"24 matches in 9 files","depth":1,"bounds":{"left":0.32779256,"top":0.12609737,"width":0.04255319,"height":0.013567438},"role_description":"text"},{"role":"AXCheckBox","text":"File mask:","depth":1,"bounds":{"left":0.5315825,"top":0.12290503,"width":0.029587766,"height":0.019952115},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"*.php","depth":1,"bounds":{"left":0.5621675,"top":0.11971269,"width":0.027925532,"height":0.027134877},"value":"*.php","role_description":"combo box","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"*.php","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Auto","depth":6,"role_description":"text"},{"role":"AXTextField","text":"*.php","depth":2,"bounds":{"left":0.5661569,"top":0.12609737,"width":0.011635638,"height":0.013567438},"value":"*.php","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":1,"bounds":{"left":0.5944149,"top":0.12290503,"width":0.00731383,"height":0.017557861},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pin Window","depth":1,"bounds":{"left":0.6037234,"top":0.12290503,"width":0.00731383,"height":0.017557861},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":1,"bounds":{"left":0.2962101,"top":0.15403032,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"ActivityLeadConverted","depth":2,"bounds":{"left":0.30718085,"top":0.15403032,"width":0.26196808,"height":0.017557861},"value":"ActivityLeadConverted","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":1,"bounds":{"left":0.578125,"top":0.15403032,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match case","depth":1,"bounds":{"left":0.5880984,"top":0.15403032,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":1,"bounds":{"left":0.59674203,"top":0.15403032,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":1,"bounds":{"left":0.60538566,"top":0.15403032,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":2,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In Project","depth":2,"bounds":{"left":0.2992021,"top":0.1867518,"width":0.022938829,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Module","depth":2,"bounds":{"left":0.32214096,"top":0.1867518,"width":0.019281914,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Directory","depth":2,"bounds":{"left":0.3414229,"top":0.1867518,"width":0.022606382,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Scope","depth":2,"bounds":{"left":0.36402926,"top":0.1867518,"width":0.017287234,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Module","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.099734046,"height":0.0},"role_description":"pop up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"/Users/lukas/jiminny/app/app/Services/Crm/Salesforce","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.1974734,"height":0.0},"value":"/Users/lukas/jiminny/app/app/Services/Crm/Salesforce","role_description":"combo box","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Salesforce","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Providers","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Events/Activities/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Playbooks","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Coaching/UserPilot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Reports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/VO/Repository/OnDemandActivitySearch","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences/UserPilot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/Webhook","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/resources/views/emails/reports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Mail/Reports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Repositories","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/API/UserAutomatedReports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Kiosk/AutomatedReports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/ActivitySearch/Service","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/AutomatedReports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Salesforce","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/routes","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/database/migrations","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/325d461a-c90f-430a-99d4-6ddfce0c61d7","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/API/V2","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Crm/Hubspot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/DealInsights","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Policies","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Helpers","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Events/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Models","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Teams","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Crm/Salesforce","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Journal","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/ServiceTraits","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/OpportunitySyncStrategy","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Webhook","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/storage/logs","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Internal","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Transcription","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Repositories/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Listeners/Teams","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Models/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/91133dfa-8d71-4e12-bfb8-fec7f1afba8f","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Observers","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Mail","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Activities","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Activities/Migrator","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/ServiceTraits","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/User","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Models/Activity","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Webhook","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/AiAutomation/Listeners/PendingAnalysis","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/ActivitySearch/FilterDefinition/DealInsights","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/DecorateActivity","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Activity/Event","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Sidekick","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Activity/PushSummaryToCrm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Bots","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/RecallAI/Webhooks/Handlers","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Events/Activities/Bots","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/MeetingBot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Activity/RingCentral","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/Webhook/Hubspot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Activity/Gmail","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/CrmObjects/ServiceTraits","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Mailbox","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/front-end/src/composables","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Calendars","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/API","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/Internal/WebhookReceiver","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/ServiceTraits","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Queue","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Crm/Hubspot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Transcription/Job","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Listeners","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Listeners","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Traits","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Jobs/Crm/Hubspot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Activity","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Calendar/Command","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/.idea/queries","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/vendor/hubspot/api-client/codegen/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/vendor/hubspot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Fields","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Copper","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Bullhorn","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Notifications/Channels","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Journal","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Interactions/Settings/Teams","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Exceptions/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Exceptions","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/vendor/hubspot/hubspot-php/src/Endpoints","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/config","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/OpportunitySyncStrategy","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/vendor/laravel/framework/src/Illuminate/Redis/Connections","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/Settings/Teams","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Webhook/Traits","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/vendor/laravel/framework/src/Illuminate/Broadcasting","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/FeatureFlags","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Activity","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/ActivitySearch","depth":6,"role_description":"text"}]...
|
8938964223937813719
|
-4923626108873515710
|
click
|
accessibility
|
NULL
|
Find in Files
24 matches in 9 files
File mask:
*.p Find in Files
24 matches in 9 files
File mask:
*.php
*.php
Auto
*.php
Filter Search Results
Pin Window
Search History
ActivityLeadConverted
New Line
Match case
Words
Regex
Replace History
Replace
New Line
Preserve case
In Project
Module
Directory
Scope
Module
/Users/lukas/jiminny/app/app/Services/Crm/Salesforce
/Users/lukas/jiminny/app/app/Services/Crm/Salesforce
/Users/lukas/jiminny/app/app/Providers
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp
/Users/lukas/jiminny/app/app/Events/Activities/Crm
/Users/lukas/jiminny/app/app/Listeners/Playbooks
/Users/lukas/jiminny/app/app/Console/Commands/Crm
/Users/lukas/jiminny/app/app/Services/Crm
/Users/lukas/jiminny/app/app/Listeners/Activities/Coaching/UserPilot
/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot
/Users/lukas/jiminny/app/app/Listeners/Crm
/Users/lukas/jiminny/app/app/Http/Controllers
/Users/lukas/jiminny/app/app/Console/Commands/Reports
/Users/lukas/jiminny/app/app/VO/Repository/OnDemandActivitySearch
/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences/UserPilot
/Users/lukas/jiminny/app/app/Http/Controllers/Webhook
/Users/lukas/jiminny/app/resources/views/emails/reports
/Users/lukas/jiminny/app/app/Mail/Reports
/Users/lukas/jiminny/app/app/Repositories
/Users/lukas/jiminny/app/app/Http/Controllers/API/UserAutomatedReports
/Users/lukas/jiminny/app/app/Services/Kiosk/AutomatedReports
/Users/lukas/jiminny/app/app/Component/ActivitySearch/Service
/Users/lukas/jiminny/app/app/Jobs/AutomatedReports
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Salesforce
/Users/lukas/jiminny/app/routes
/Users/lukas/jiminny/app/app/Console/Commands
/Users/lukas/jiminny/app/database/migrations
/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/325d461a-c90f-430a-99d4-6ddfce0c61d7
/Users/lukas/jiminny/app/app/Http/Controllers/API/V2
/Users/lukas/jiminny/app/app/Jobs/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/DealInsights
/Users/lukas/jiminny/app/app/Policies
/Users/lukas/jiminny/app/app/Services/Crm/Helpers
/Users/lukas/jiminny/app/app/Jobs/Crm
/Users/lukas/jiminny/app/app/Events/Crm
/Users/lukas/jiminny/app/app/Models
/Users/lukas/jiminny/app/app/Listeners/Teams
/Users/lukas/jiminny/app/app/Jobs/Crm/Salesforce
/Users/lukas/jiminny/app/app
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Journal
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/ServiceTraits
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/OpportunitySyncStrategy
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Webhook
/Users/lukas/jiminny/app/storage/logs
/Users/lukas/jiminny/app
/Users/lukas/jiminny/app/app/Services/Internal
/Users/lukas/jiminny/app/app/Listeners/Transcription
/Users/lukas/jiminny/app/app/Repositories/Crm
/Users/lukas/jiminny/app/tests/Unit/Listeners/Teams
/Users/lukas/jiminny/app/app/Models/Crm
/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/91133dfa-8d71-4e12-bfb8-fec7f1afba8f
/Users/lukas/jiminny/app/app/Observers
/Users/lukas/jiminny/app/app/Services/Mail
/Users/lukas/jiminny/app/app/Console/Commands/Activities
/Users/lukas/jiminny/app/app/Console/Commands/Activities/Migrator
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/ServiceTraits
/Users/lukas/jiminny/app/app/Jobs/User
/Users/lukas/jiminny/app/app/Models/Activity
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Webhook
/Users/lukas/jiminny/app/app/Component/AiAutomation/Listeners/PendingAnalysis
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/ActivitySearch/FilterDefinition/DealInsights
/Users/lukas/jiminny/app/app/Services/Crm/DecorateActivity
/Users/lukas/jiminny/app/app/Component/Activity/Event
/Users/lukas/jiminny/app/app/Component/Sidekick
/Users/lukas/jiminny/app/app/Jobs/Activity/PushSummaryToCrm
/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences
/Users/lukas/jiminny/app/app/Listeners/Activities/Bots
/Users/lukas/jiminny/app/app/Services/RecallAI/Webhooks/Handlers
/Users/lukas/jiminny/app/app/Events/Activities/Bots
/Users/lukas/jiminny/app/app/Component/MeetingBot
/Users/lukas/jiminny/app/app/Services/Activity/RingCentral
/Users/lukas/jiminny/app/app/Http/Controllers/Webhook/Hubspot
/Users/lukas/jiminny/app/app/Services/Activity/Gmail
/Users/lukas/jiminny/app/app/Services/Crm/CrmObjects/ServiceTraits
/Users/lukas/jiminny/app/app/Jobs/Mailbox
/Users/lukas/jiminny/app/app/Console
/Users/lukas/jiminny/app/front-end/src/composables
/Users/lukas/jiminny/app/app/Console/Commands/Calendars
/Users/lukas/jiminny/app/app/Http/Controllers/API
/Users/lukas/jiminny/app/app/Http/Controllers/Internal/WebhookReceiver
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/ServiceTraits
/Users/lukas/jiminny/app/app/Component/Queue
/Users/lukas/jiminny/app/app/Console/Commands/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/Transcription/Job
/Users/lukas/jiminny/app/tests/Unit/Services/Listeners
/Users/lukas/jiminny/app/app/Services/Crm/Listeners
/Users/lukas/jiminny/app/app/Traits
/Users/lukas/jiminny/app/tests/Unit/Jobs/Crm/Hubspot
/Users/lukas/jiminny/app/tests/Unit/Services/Crm
/Users/lukas/jiminny/app/app/Services/Activity
/Users/lukas/jiminny/app/app/Services/Calendar/Command
/Users/lukas/jiminny/app/.idea/queries
/Users/lukas/jiminny/app/vendor/hubspot/api-client/codegen/Crm
/Users/lukas/jiminny/app/vendor/hubspot
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Fields
/Users/lukas/jiminny/app/app/Services/Crm/Copper
/Users/lukas/jiminny/app/app/Services/Crm/Bullhorn
/Users/lukas/jiminny/app/app/Notifications/Channels
/Users/lukas/jiminny/app/tests/Unit
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Journal
/Users/lukas/jiminny/app/app/Interactions/Settings/Teams
/Users/lukas/jiminny/app/app/Exceptions/Crm
/Users/lukas/jiminny/app/app/Exceptions
/Users/lukas/jiminny/app/vendor/hubspot/hubspot-php/src/Endpoints
/Users/lukas/jiminny/app/config
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/OpportunitySyncStrategy
/Users/lukas/jiminny/app/vendor/laravel/framework/src/Illuminate/Redis/Connections
/Users/lukas/jiminny/app/app/Http/Controllers/Settings/Teams
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Webhook/Traits
/Users/lukas/jiminny/app/vendor/laravel/framework/src/Illuminate/Broadcasting
/Users/lukas/jiminny/app/app/Component/FeatureFlags
/Users/lukas/jiminny/app/app/Component/Activity
/Users/lukas/jiminny/app/app/Component/ActivitySearch...
|
63396
|
|
58863
|
1264
|
12
|
2026-04-20T13:06:14.700437+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776690374700_m1.jpg...
|
PhpStorm
|
PhpStorm
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0Nikolay Nikolov (Presenting, annotating)100% C428• Mon 20 Apr 16:06:148Ch oiuireC7 [JY-20615) Notty7 JY-20613] Allow sinny.atlassian.net/browse/JY-2050188Q SearchJiminny Oiew) / Jy-15871 / A JY-20501SubtasksAdd subtaskLinked work itemsclones( JY-20500 Batch Initial sync for Salesforce~ Activity|HistoryWork 109Add a comment.Suggest a reply....Who is working on this...?status update.Uro dpc press M loconNikolay Nikolov1 second agoManual Sync Commandstnese are tie exisuing commands that call Synccontactst " syncaccountsl (one-oy-one processing)usdeeci.Syne "contastphp axmertpoocoomo Snorn tour sorcenq 8.Mon 20 Apr 16:06[uY-20500| Butch2 (JY-20501) Batchi Xesi Jiminry - CalendalDe Meet - [PlattorD TO0OC Debug crm-sync.L Keone L sety Cts L Lean 0 Achpoero Нome() Rev Prophet |( My PRs|BACKLOG+La Al bockmarksl+ CreateAsk Rovov DetailsFix versionsNoneSprintPlatform Sprint 3 Q2DaysNoneNeed QA|NoParent• Jy-15971 CRM Synching ImprovemeCanny LinksOpen Canny LinksMore fieldsOriginal estimateTime trackingNo time logged> Automation 4 Rule executions› featureOS Open featureos› Sentry sl! Uinked IssuesCreated 24 March 2026 at 18:03UooeoemowzeoahenkeAneliya AngelovaStefka Stoyanova3 othersNikolay NikolovLukas Kovalik1:04:264:06 PM | [Platform] Refinement ®Sộ3...
|
NULL
|
8938393049902555384
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0Nikolay Nikolov (Presenting, annotating)100% C428• Mon 20 Apr 16:06:148Ch oiuireC7 [JY-20615) Notty7 JY-20613] Allow sinny.atlassian.net/browse/JY-2050188Q SearchJiminny Oiew) / Jy-15871 / A JY-20501SubtasksAdd subtaskLinked work itemsclones( JY-20500 Batch Initial sync for Salesforce~ Activity|HistoryWork 109Add a comment.Suggest a reply....Who is working on this...?status update.Uro dpc press M loconNikolay Nikolov1 second agoManual Sync Commandstnese are tie exisuing commands that call Synccontactst " syncaccountsl (one-oy-one processing)usdeeci.Syne "contastphp axmertpoocoomo Snorn tour sorcenq 8.Mon 20 Apr 16:06[uY-20500| Butch2 (JY-20501) Batchi Xesi Jiminry - CalendalDe Meet - [PlattorD TO0OC Debug crm-sync.L Keone L sety Cts L Lean 0 Achpoero Нome() Rev Prophet |( My PRs|BACKLOG+La Al bockmarksl+ CreateAsk Rovov DetailsFix versionsNoneSprintPlatform Sprint 3 Q2DaysNoneNeed QA|NoParent• Jy-15971 CRM Synching ImprovemeCanny LinksOpen Canny LinksMore fieldsOriginal estimateTime trackingNo time logged> Automation 4 Rule executions› featureOS Open featureos› Sentry sl! Uinked IssuesCreated 24 March 2026 at 18:03UooeoemowzeoahenkeAneliya AngelovaStefka Stoyanova3 othersNikolay NikolovLukas Kovalik1:04:264:06 PM | [Platform] Refinement ®Sộ3...
|
NULL
|
|
60460
|
1303
|
4
|
2026-04-20T15:37:30.071223+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776699450071_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
caltvlewWindowmelp•Salestorce vKurlVservices/data/ caltvlewWindowmelp•Salestorce vKurlVservices/data/v46.0/search/2c=FIND (*[PHONE]") IN PHONE FIELDS RETURNING Contact(Id.Ownerld. Accountid Email MobilePhone.Name.Title.Phone.PhotoUri.MailinaCountry.CreatedDate.LastModifiedDate.IsDeleted WHEREllsDeleted = false ORDERIBY LastMod& SaveAmazon Connect Copy> AWS• SalesForcelv D USEFUL> @ Auth|> Business Process•U syncGET GET OPP by OwneGet Get task for link to task for companyGET object describeGET aet validation rulesGET get ValidationRuleGET Kurl)/services/data/v46.0/search/20=FIND /"[PHONE]"} IN PHONE FI....Gel FlelaverinitionGET aet standard field definition› [J NotesGET QUERYGET SEARCHGET Salesforce Get RecordGst Calocforco Cronto DonordlGsy Calocforco Got Cuctom Siold MotadateGET Salesforce SOQL DuplicateGET Salestorce SOal Duolicate (2)asy Calocfarno COsilDescriptionBulk EditBody Cookies 3 Headers 9 lest ResultsJSON V@ Debua with AlySave changes?«url))/services/data/v46.0/search/?q... has unsaved changes. Savethese changes to avoid losing vour work• Always discard unsaved changes when closing a tab ®Don't save400 Bad Request • 236 ms • 490 B • (iA| e.g. Save Response •.-=Q18csr ffef urlll/corvinocldoto/vG0 OlucorimalGET OraanizationGET Get Organization IDGET aet obiect deletedGEt Obioct DermicciondSalocioft>FLOWS100% C7Mon 20 Apr 18:37:294* Al00D90000000fUsz.AQEAOKRIt62MP50All variablesGlobals Vault Tools>@@...
|
NULL
|
8938092460108692220
|
NULL
|
click
|
ocr
|
NULL
|
caltvlewWindowmelp•Salestorce vKurlVservices/data/ caltvlewWindowmelp•Salestorce vKurlVservices/data/v46.0/search/2c=FIND (*[PHONE]") IN PHONE FIELDS RETURNING Contact(Id.Ownerld. Accountid Email MobilePhone.Name.Title.Phone.PhotoUri.MailinaCountry.CreatedDate.LastModifiedDate.IsDeleted WHEREllsDeleted = false ORDERIBY LastMod& SaveAmazon Connect Copy> AWS• SalesForcelv D USEFUL> @ Auth|> Business Process•U syncGET GET OPP by OwneGet Get task for link to task for companyGET object describeGET aet validation rulesGET get ValidationRuleGET Kurl)/services/data/v46.0/search/20=FIND /"[PHONE]"} IN PHONE FI....Gel FlelaverinitionGET aet standard field definition› [J NotesGET QUERYGET SEARCHGET Salesforce Get RecordGst Calocforco Cronto DonordlGsy Calocforco Got Cuctom Siold MotadateGET Salesforce SOQL DuplicateGET Salestorce SOal Duolicate (2)asy Calocfarno COsilDescriptionBulk EditBody Cookies 3 Headers 9 lest ResultsJSON V@ Debua with AlySave changes?«url))/services/data/v46.0/search/?q... has unsaved changes. Savethese changes to avoid losing vour work• Always discard unsaved changes when closing a tab ®Don't save400 Bad Request • 236 ms • 490 B • (iA| e.g. Save Response •.-=Q18csr ffef urlll/corvinocldoto/vG0 OlucorimalGET OraanizationGET Get Organization IDGET aet obiect deletedGEt Obioct DermicciondSalocioft>FLOWS100% C7Mon 20 Apr 18:37:294* Al00D90000000fUsz.AQEAOKRIt62MP50All variablesGlobals Vault Tools>@@...
|
NULL
|
|
43688
|
928
|
9
|
2026-04-17T08:19:12.292749+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776413952292_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/xpx-omah-rknlala]• Backend Chapter • 11 m left100% <478 • Fri 17 Apr 11:19:11=6+llian Kyuchukov (Presenting, annotating)FileProfiesCloudWatch | eu-west-1CowowenoweteCloudWatch [ eu-west-1eu-west-1.console.aws.amazon.com/cloudwatch/home?region=eu-west-1#logsV2:logs-insightsS3FqueryldS3D1dc183a9-8b6c-4a17-9483-14cc025cbc96S26queryDetailS3D-(end~0-start--8.awsO Stero[Option+S)©0/12CloudWatchLogs Insights >_generalQuery definition infoa unified observability platform for a smoother experience, now in preview mode. Click here to try it out!ComleCompare (Off)|UTC timezoneStart tailingQuery scopeLog group nameProperty selectorSelect up to 50 log groupsE Show more chosen log groups (+29)|fields etinestanp, @nessage, @logStrean, elog1 filter pnessage like '[HubSpot Webhook]'| filter geessage Like "59029758241'1 Linit 10000Logs Insights QL½ Query generatorQ FieldsSaved and sample queries© Query commandsRun queryFetching resultsCanceluweis sercu cueryLogs (-)Patterns (-)VisualizationLogs (-)wminetteut$ Investigate +In Share resultaFetching data..E GoudShell11:19 AM | Daily - Processing• • Q 8• Fri17Apr 11:19.• WorkFinish update :EU.View_Only@765720199711JINVasil Vasilevllian KyuchukovBrowse: Log Groups Facets Lookup tablesMihail MihayloNikolay NikolovAdotodohoeePtivacyTermsHide histogcamCookie preferencesAetmathot2024-11_6.56.pngLukas Kovalik...
|
NULL
|
8937417117383703126
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/xpx-omah-rknlala]• Backend Chapter • 11 m left100% <478 • Fri 17 Apr 11:19:11=6+llian Kyuchukov (Presenting, annotating)FileProfiesCloudWatch | eu-west-1CowowenoweteCloudWatch [ eu-west-1eu-west-1.console.aws.amazon.com/cloudwatch/home?region=eu-west-1#logsV2:logs-insightsS3FqueryldS3D1dc183a9-8b6c-4a17-9483-14cc025cbc96S26queryDetailS3D-(end~0-start--8.awsO Stero[Option+S)©0/12CloudWatchLogs Insights >_generalQuery definition infoa unified observability platform for a smoother experience, now in preview mode. Click here to try it out!ComleCompare (Off)|UTC timezoneStart tailingQuery scopeLog group nameProperty selectorSelect up to 50 log groupsE Show more chosen log groups (+29)|fields etinestanp, @nessage, @logStrean, elog1 filter pnessage like '[HubSpot Webhook]'| filter geessage Like "59029758241'1 Linit 10000Logs Insights QL½ Query generatorQ FieldsSaved and sample queries© Query commandsRun queryFetching resultsCanceluweis sercu cueryLogs (-)Patterns (-)VisualizationLogs (-)wminetteut$ Investigate +In Share resultaFetching data..E GoudShell11:19 AM | Daily - Processing• • Q 8• Fri17Apr 11:19.• WorkFinish update :EU.View_Only@765720199711JINVasil Vasilevllian KyuchukovBrowse: Log Groups Facets Lookup tablesMihail MihayloNikolay NikolovAdotodohoeePtivacyTermsHide histogcamCookie preferencesAetmathot2024-11_6.56.pngLukas Kovalik...
|
NULL
|
|
53347
|
1155
|
32
|
2026-04-20T08:07:10.907066+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776672430907_m2.jpg...
|
Firefox
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira — Work...
|
True
|
jiminny.atlassian.net/jira/software/c/projects/JY/ jiminny.atlassian.net/jira/software/c/projects/JY/boards/37?selectedIssue=JY-20553...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board 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
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app
JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app
[JY-20543] AJ Reports > Tracking - Jira
[JY-20543] AJ Reports > Tracking - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
New Tab
New Tab
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot | Logged-activity
Userpilot | Logged-activity
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Feed — jiminny — Sentry
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Space navigation
Space navigation
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
6 Notifications
6 Notifications
Help
Help
Settings
Settings
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Platform Team
Platform Team
Board actions
Board actions
SE Kanban
SE Kanban
Board actions
Board actions
Capture Team
Capture Team
Board actions
Board actions
Enterprise Stability Issues 🤕
Enterprise Stability Issues 🤕
Board actions
Board actions
Processing Team
Processing Team
Board actions
Board actions
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New)
Jiminny (New)
Platform Team
Platform Team
Link contributing teams
Board actions
Board actions
Share
Automation
Give feedback
Give feedback
Enter full screen
Enter full screen
Summary
Summary
Timeline
Timeline
Backlog
Backlog
Active sprints
Active sprints
Calendar
Calendar
Reports
Reports
Testing Board
Testing Board
List
List
Forms
Forms
Components
Components
Development
Development
Code
Code
Security
Security
Releases
Releases
Deployments
Deployments
Archived work items
Archived work items
Pages
Pages
Shortcuts
Shortcuts
Slack integration
Slack integration
Reporting Center
Reporting Center
Add to navigation
As you type to search or apply filters, the board updates with work items to match.
Search on current page
Filter by assignee
Filter assignees by Lukas Kovalik
Filter assignees by Nikolay Ivanov
Filter assignees by Nikolay Nikolov
Filter assignees by Nikolay Yankov
Filter assignees by Steliyan Georgiev
Filter assignees by Unassigned
Epic
Epic
Type
Type
Label
Label
Quick filters
Quick filters
Complete sprint
Complete sprint
Sprint details
Sprint details
Group by Queries
Group
: Queries
Sprint insights
Sprint insights
View settings
View settings
More actions
More actions
Ready For DEV
READY FOR DEV
7
JY-20489 Rework Nudges - Phase 2 - change Nudges to use the indexed_at period. Use the enter key to load the work item.
Rework Nudges - Phase 2 - change Nudges to use the indexed_at period
Cost-effective and faster nudges, Edit Parent
COST-EFFECTIVE AND FASTER NUDGES
Backlog
JY-20489
JY-20489
5
JY-20564 Investigate and fix why exceed Fontawesome package limits. Use the enter key to load the work item.
Investigate and fix why exceed Fontawesome package limits
MAINTENANCE
Ready for Dev
JY-20564
JY-20564
1
pull request
JY-20372 AI Reports > Empty page design and promotion . Use the enter key to load the work item.
AI Reports > Empty page design and promotion
AJ REPORTS
Backlog
JY-20372
JY-20372
6
JY-20157 Send email notification when the report is not generated. Use the enter key to load the work item.
Send email notification when the report is not generated
AJ REPORTS
Backlog
JY-20157
JY-20157
2
JY-20508 Notify a user before the AJ Report expires. Use the enter key to load the work item.
Notify a user before the AJ Report expires
AJ REPORTS
Backlog
JY-20508
JY-20508
1
JY-20352 Sync opportunities without a local owner (user_id is null). Use the enter key to load the work item.
Sync opportunities without a local owner (user_id is null)
PLATFORM STABILITY
Backlog
JY-20352
JY-20352
4
JY-19957 Upgrade BE libraries - Apr. Use the enter key to load the work item.
Upgrade BE libraries - Apr
MAINTENANCE
Backlog
JY-19957
JY-19957
1
In DEV
IN DEV
2
JY-9712 Change forever nudges to 1 year expiration. Use the enter key to load the work item.
Change forever nudges to 1 year expiration
COST-EFFECTIVE AND FASTER NUDGES
In Dev
JY-9712
JY-9712
4.5
pull request
JY-20566 AI Review - Q1 - Summary/Action items/Key Points. Use the enter key to load the work item.
AI Review - Q1 - Summary/Action items/Key Points
Growth - Maintain our competitive position, Edit Parent
GROWTH - MAINTAIN OUR COMPETITIVE POSITION
In Dev
JY-20566
JY-20566
3
Code Review
CODE REVIEW
4
Create work item
JY-19798 Evaluation for AI Activity Types. Use the enter key to load the work item.
Evaluation for AI Activity Types
Auto-detected activity type, Edit Parent
AUTO-DETECTED ACTIVITY TYPE
Code Review
JY-19798
JY-19798
1
pull request
Create work item
JY-20553 Delays in CRM Sync. Use the enter key to load the work item.
Delays in CRM Sync
Platform Stability, Edit Parent
PLATFORM STABILITY
Code Review
JY-20553
JY-20553
3.5
pull request
Create work item
JY-20692 Issue with reconnecting Zoho. Use the enter key to load the work item.
Issue with reconnecting Zoho
SUPPORT TICKETS
Code Review
JY-20692
JY-20692
pull request
JY-20698 Les Mills activity types not pulling in. Use the enter key to load the work item.
Les Mills activity types not pulling in
SUPPORT TICKETS
Code Review
JY-20698
JY-20698
1
commit
Create work item in Code Review
Create
Blocked
BLOCKED
Create work item in Blocked
Create
QA
QA
1
Create work item
JY-18909 [Part2] Automated reports with Ask Jiminny. Use the enter key to load the work item.
[Part2] Automated reports with Ask Jiminny
AJ REPORTS
In QA
AI
BE
FE
QA
JY-18909
JY-18909
5
pull request
Create work item in QA
Create
PO Acceptance
PO ACCEPTANCE
Create work item in PO Acceptance
Create
Deploy...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"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.013297873,"top":0.10614525,"width":0.09524601,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.19963431,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.15525267,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20543] AJ Reports > Tracking - Jira","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20543] AJ Reports > Tracking - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.06981383,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.10688165,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.12915559,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.07962101,"height":0.032721467},"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.013297873,"top":0.30247405,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.06200133,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Logged-activity","depth":4,"bounds":{"left":0.0,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Logged-activity","depth":5,"bounds":{"left":0.013297873,"top":0.367917,"width":0.04637633,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.38946527,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.40063846,"width":0.2052859,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.42218676,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.43335995,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.45490822,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.4660814,"width":0.042719416,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.48762968,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.49880287,"width":0.2052859,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.5219473,"width":0.07413564,"height":0.025538707},"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.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":10,"bounds":{"left":0.090259306,"top":0.07861133,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":11,"bounds":{"left":0.090259306,"top":0.097765364,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":12,"bounds":{"left":0.090259306,"top":0.097765364,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":11,"bounds":{"left":0.090259306,"top":0.11691939,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":12,"bounds":{"left":0.090259306,"top":0.11691939,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":11,"bounds":{"left":0.090259306,"top":0.13607343,"width":0.029421542,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":12,"bounds":{"left":0.090259306,"top":0.13607343,"width":0.029421542,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Space navigation","depth":11,"bounds":{"left":0.090259306,"top":0.15522745,"width":0.037898935,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Space navigation","depth":12,"bounds":{"left":0.090259306,"top":0.15522745,"width":0.037898935,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":10,"bounds":{"left":0.08361037,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":12,"bounds":{"left":0.0887633,"top":0.06344773,"width":0.039727394,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Switch sites or apps","depth":11,"bounds":{"left":0.095578454,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Switch sites or apps","depth":13,"bounds":{"left":0.10073138,"top":0.06344773,"width":0.044215426,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":10,"bounds":{"left":0.10887633,"top":0.057861134,"width":0.029421542,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Search, press enter to navigate to advanced search with your text query","depth":12,"bounds":{"left":0.40475398,"top":0.06264964,"width":0.24268617,"height":0.015961692},"help_text":"","placeholder":"Search","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create","depth":11,"bounds":{"left":0.65575135,"top":0.057861134,"width":0.030086435,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":13,"bounds":{"left":0.66705453,"top":0.06384677,"width":0.014793883,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":13,"bounds":{"left":0.9109042,"top":0.057861134,"width":0.035904255,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":15,"bounds":{"left":0.9222075,"top":0.06384677,"width":0.020611702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"6 Notifications","depth":13,"bounds":{"left":0.9481383,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6 Notifications","depth":15,"bounds":{"left":0.95329124,"top":0.06344773,"width":0.031914894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":13,"bounds":{"left":0.9601064,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":15,"bounds":{"left":0.9652593,"top":0.06344773,"width":0.010139627,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Settings","depth":13,"bounds":{"left":0.97207445,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Settings","depth":15,"bounds":{"left":0.9772274,"top":0.06344773,"width":0.017952127,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"lukas.kovalik@jiminny.com","depth":13,"bounds":{"left":0.9847075,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"For you","depth":13,"bounds":{"left":0.08361037,"top":0.09976058,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":16,"bounds":{"left":0.09424867,"top":0.10574621,"width":0.01662234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Recent","depth":13,"bounds":{"left":0.08361037,"top":0.12529927,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":16,"bounds":{"left":0.09424867,"top":0.13128492,"width":0.015458777,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Starred","depth":13,"bounds":{"left":0.08361037,"top":0.15083799,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":16,"bounds":{"left":0.09424867,"top":0.15682362,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":13,"bounds":{"left":0.08361037,"top":0.1763767,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":16,"bounds":{"left":0.09424867,"top":0.18236233,"width":0.011635638,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More actions for Apps","depth":14,"bounds":{"left":0.15309176,"top":0.17956904,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Apps","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":13,"bounds":{"left":0.08361037,"top":0.2019154,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":16,"bounds":{"left":0.09424867,"top":0.20790103,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":14,"bounds":{"left":0.13646941,"top":0.20510775,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More actions for spaces","depth":14,"bounds":{"left":0.14577793,"top":0.20510775,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for spaces","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":17,"bounds":{"left":0.08959442,"top":0.23423783,"width":0.013464096,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":18,"bounds":{"left":0.08759973,"top":0.2529928,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":21,"bounds":{"left":0.09823803,"top":0.25897846,"width":0.032081116,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":19,"bounds":{"left":0.08892952,"top":0.25618514,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Create board","depth":19,"bounds":{"left":0.13646941,"top":0.25618514,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create board","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More actions for Jiminny (New)","depth":19,"bounds":{"left":0.14577793,"top":0.25618514,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Jiminny (New)","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Platform Team","depth":20,"bounds":{"left":0.09158909,"top":0.27853152,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Team","depth":23,"bounds":{"left":0.1022274,"top":0.28451717,"width":0.032247342,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Board actions","depth":21,"bounds":{"left":0.15309176,"top":0.28172386,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SE Kanban","depth":20,"bounds":{"left":0.09158909,"top":0.30407023,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SE Kanban","depth":23,"bounds":{"left":0.1022274,"top":0.31005585,"width":0.024102394,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Board actions","depth":21,"bounds":{"left":0.15309176,"top":0.30726257,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Capture Team","depth":20,"bounds":{"left":0.09158909,"top":0.32960895,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Capture Team","depth":23,"bounds":{"left":0.1022274,"top":0.33559456,"width":0.03125,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Board actions","depth":21,"bounds":{"left":0.15309176,"top":0.33280128,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Enterprise Stability Issues 🤕","depth":20,"bounds":{"left":0.09158909,"top":0.35514766,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enterprise Stability Issues 🤕","depth":23,"bounds":{"left":0.1022274,"top":0.36113328,"width":0.050531916,"height":0.030726258},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Board actions","depth":21,"bounds":{"left":0.15309176,"top":0.35834,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Processing Team","depth":20,"bounds":{"left":0.09158909,"top":0.38068634,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Processing Team","depth":23,"bounds":{"left":0.1022274,"top":0.386672,"width":0.038231384,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Board actions","depth":21,"bounds":{"left":0.15309176,"top":0.38387868,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":18,"bounds":{"left":0.08759973,"top":0.40622506,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service-Desk","depth":21,"bounds":{"left":0.09823803,"top":0.4122107,"width":0.03025266,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More actions for Service-Desk","depth":19,"bounds":{"left":0.15442154,"top":0.4094174,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Service-Desk","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More spaces","depth":18,"bounds":{"left":0.08759973,"top":0.43176377,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More spaces","depth":21,"bounds":{"left":0.09823803,"top":0.43774942,"width":0.028756648,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filters","depth":13,"bounds":{"left":0.08361037,"top":0.45730248,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Filters","depth":16,"bounds":{"left":0.09424867,"top":0.4632881,"width":0.013796543,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More actions for Filters","depth":14,"bounds":{"left":0.15309176,"top":0.46049482,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Filters","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dashboards","depth":13,"bounds":{"left":0.08361037,"top":0.4828412,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dashboards","depth":16,"bounds":{"left":0.09424867,"top":0.4888268,"width":0.026761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create dashboard","depth":14,"bounds":{"left":0.15508644,"top":0.48603353,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create dashboard","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More actions for Dashboards","depth":14,"bounds":{"left":0.16240026,"top":0.48603353,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Dashboards","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Operations","depth":13,"bounds":{"left":0.08361037,"top":0.5083799,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Operations","depth":16,"bounds":{"left":0.09424867,"top":0.5143655,"width":0.02443484,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More actions for Operations","depth":14,"bounds":{"left":0.15309176,"top":0.51157224,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Operations","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Confluence , (opens new window)","depth":14,"bounds":{"left":0.08361037,"top":0.5434956,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Confluence","depth":18,"bounds":{"left":0.09424867,"top":0.5494813,"width":0.025764627,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":16,"bounds":{"left":0.08361037,"top":0.55706304,"width":0.04837101,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":14,"bounds":{"left":0.08361037,"top":0.56903434,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":18,"bounds":{"left":0.09424867,"top":0.57501996,"width":0.014793883,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":16,"bounds":{"left":0.08361037,"top":0.5826017,"width":0.04837101,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"open menu","depth":15,"bounds":{"left":0.14378324,"top":0.57222664,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"open menu","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Customise sidebar","depth":13,"bounds":{"left":0.08361037,"top":0.60415006,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customise sidebar","depth":16,"bounds":{"left":0.09424867,"top":0.6101357,"width":0.04155585,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize side navigation panel","depth":14,"bounds":{"left":0.2109375,"top":0.0981644,"width":0.062333778,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Spaces","depth":14,"bounds":{"left":0.16738696,"top":0.09976058,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Spaces","depth":16,"bounds":{"left":0.16738696,"top":0.102553874,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":14,"bounds":{"left":0.18683511,"top":0.102553874,"width":0.0016622341,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":14,"bounds":{"left":0.19165559,"top":0.09976058,"width":0.03174867,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":16,"bounds":{"left":0.19165559,"top":0.102553874,"width":0.03174867,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Platform Team","depth":11,"bounds":{"left":0.16738696,"top":0.12210695,"width":0.045877658,"height":0.01915403},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Platform Team","depth":12,"bounds":{"left":0.16738696,"top":0.12210695,"width":0.045877658,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Link contributing teams","depth":11,"bounds":{"left":0.21525931,"top":0.118914604,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Board actions","depth":11,"bounds":{"left":0.2278923,"top":0.118914604,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Share","depth":11,"bounds":{"left":0.94148934,"top":0.118914604,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Automation","depth":11,"bounds":{"left":0.95478725,"top":0.118914604,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give feedback","depth":11,"bounds":{"left":0.9680851,"top":0.118914604,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Give feedback","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Enter full screen","depth":11,"bounds":{"left":0.98138297,"top":0.118914604,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enter full screen","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Summary","depth":14,"bounds":{"left":0.16472739,"top":0.14764565,"width":0.035904255,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summary","depth":16,"bounds":{"left":0.17603059,"top":0.15363128,"width":0.021276595,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Timeline","depth":14,"bounds":{"left":0.20196144,"top":0.14764565,"width":0.03357713,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Timeline","depth":16,"bounds":{"left":0.21326463,"top":0.15363128,"width":0.018949468,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Backlog","depth":14,"bounds":{"left":0.23686835,"top":0.14764565,"width":0.032413565,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Backlog","depth":16,"bounds":{"left":0.24817154,"top":0.15363128,"width":0.017785905,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Active sprints","depth":14,"bounds":{"left":0.2706117,"top":0.14764565,"width":0.045212764,"height":0.025538707},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Active sprints","depth":16,"bounds":{"left":0.2819149,"top":0.15363128,"width":0.030585106,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Calendar","depth":14,"bounds":{"left":0.31715426,"top":0.14764565,"width":0.03474069,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Calendar","depth":16,"bounds":{"left":0.32845744,"top":0.15363128,"width":0.020113032,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reports","depth":14,"bounds":{"left":0.35322472,"top":0.14764565,"width":0.031914894,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reports","depth":16,"bounds":{"left":0.3645279,"top":0.15363128,"width":0.017287234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Testing Board","depth":14,"bounds":{"left":0.38646942,"top":0.14764565,"width":0.046708778,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Testing Board","depth":16,"bounds":{"left":0.3977726,"top":0.15363128,"width":0.030751329,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"List","depth":14,"bounds":{"left":0.43450797,"top":0.14764565,"width":0.02244016,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"List","depth":16,"bounds":{"left":0.44581118,"top":0.15363128,"width":0.0078125,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Forms","depth":14,"bounds":{"left":0.4582779,"top":0.14764565,"width":0.028590426,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Forms","depth":16,"bounds":{"left":0.46958113,"top":0.15363128,"width":0.013962766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Components","depth":14,"bounds":{"left":0.48819813,"top":0.14764565,"width":0.04305186,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Components","depth":16,"bounds":{"left":0.49950132,"top":0.15363128,"width":0.028424202,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Development","depth":14,"bounds":{"left":0.5325798,"top":0.14764565,"width":0.044049203,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Development","depth":16,"bounds":{"left":0.54388297,"top":0.15363128,"width":0.029421542,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":14,"bounds":{"left":0.57795876,"top":0.14764565,"width":0.02642952,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":16,"bounds":{"left":0.58926195,"top":0.15363128,"width":0.011801862,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security","depth":14,"bounds":{"left":0.6057181,"top":0.14764565,"width":0.03324468,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security","depth":16,"bounds":{"left":0.61702126,"top":0.15363128,"width":0.01861702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Releases","depth":14,"bounds":{"left":0.6402925,"top":0.14764565,"width":0.034574468,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Releases","depth":16,"bounds":{"left":0.6515958,"top":0.15363128,"width":0.019946808,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deployments","depth":14,"bounds":{"left":0.6761968,"top":0.14764565,"width":0.043882977,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deployments","depth":16,"bounds":{"left":0.6875,"top":0.15363128,"width":0.02925532,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Archived work items","depth":14,"bounds":{"left":0.72140956,"top":0.14764565,"width":0.06017287,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Archived work items","depth":16,"bounds":{"left":0.73271275,"top":0.15363128,"width":0.045545213,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pages","depth":14,"bounds":{"left":0.78291225,"top":0.14764565,"width":0.02825798,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pages","depth":16,"bounds":{"left":0.79421544,"top":0.15363128,"width":0.013630319,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Shortcuts","depth":15,"bounds":{"left":0.8125,"top":0.14764565,"width":0.045545213,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shortcuts","depth":16,"bounds":{"left":0.82513297,"top":0.15363128,"width":0.021609042,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Slack integration","depth":14,"bounds":{"left":0.859375,"top":0.14764565,"width":0.05319149,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Slack integration","depth":16,"bounds":{"left":0.8706782,"top":0.15363128,"width":0.03723404,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reporting Center","depth":14,"bounds":{"left":0.91389626,"top":0.14764565,"width":0.054022606,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reporting Center","depth":16,"bounds":{"left":0.92519945,"top":0.15363128,"width":0.038065158,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add to navigation","depth":12,"bounds":{"left":0.96924865,"top":0.15083799,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"As you type to search or apply filters, the board updates with work items to match.","depth":12,"bounds":{"left":0.16738696,"top":0.20271349,"width":0.18134974,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search on current page","depth":12,"bounds":{"left":0.17569813,"top":0.188747,"width":0.050531916,"height":0.026735835},"placeholder":"Search board","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Filter by assignee","depth":13,"bounds":{"left":0.23121676,"top":0.19034317,"width":0.03873005,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Filter assignees by Lukas Kovalik","depth":12,"bounds":{"left":0.23254654,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Nikolay Ivanov","depth":12,"bounds":{"left":0.24052526,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Nikolay Nikolov","depth":12,"bounds":{"left":0.24850398,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Nikolay Yankov","depth":12,"bounds":{"left":0.25648272,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Steliyan Georgiev","depth":12,"bounds":{"left":0.26446143,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Unassigned","depth":12,"bounds":{"left":0.27244017,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Epic","depth":14,"bounds":{"left":0.28440824,"top":0.18914606,"width":0.0234375,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Epic","depth":17,"bounds":{"left":0.2883976,"top":0.19513169,"width":0.009474734,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Type","depth":14,"bounds":{"left":0.31050533,"top":0.18914606,"width":0.025099734,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Type","depth":17,"bounds":{"left":0.31449467,"top":0.19513169,"width":0.011136968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Label","depth":14,"bounds":{"left":0.3382646,"top":0.18914606,"width":0.025930852,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Label","depth":17,"bounds":{"left":0.34225398,"top":0.19513169,"width":0.011968086,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Quick filters","depth":14,"bounds":{"left":0.36685506,"top":0.18914606,"width":0.04089096,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Quick filters","depth":17,"bounds":{"left":0.37084442,"top":0.19513169,"width":0.026928192,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Complete sprint","depth":11,"bounds":{"left":0.85106385,"top":0.18914606,"width":0.04338431,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Complete sprint","depth":13,"bounds":{"left":0.8550532,"top":0.19513169,"width":0.035405584,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sprint details","depth":11,"bounds":{"left":0.8971077,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sprint details","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Group by Queries","depth":11,"bounds":{"left":0.9104056,"top":0.18914606,"width":0.041722074,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Group","depth":14,"bounds":{"left":0.914395,"top":0.19513169,"width":0.013796543,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":": Queries","depth":14,"bounds":{"left":0.9281915,"top":0.19513169,"width":0.019946808,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sprint insights","depth":11,"bounds":{"left":0.95478725,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sprint insights","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View settings","depth":11,"bounds":{"left":0.9680851,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View settings","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More actions","depth":11,"bounds":{"left":0.98138297,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Ready For DEV","depth":17,"bounds":{"left":0.17270611,"top":0.24022347,"width":0.042220745,"height":0.012769354},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"READY FOR DEV","depth":19,"bounds":{"left":0.17270611,"top":0.2406225,"width":0.03158245,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7","depth":22,"bounds":{"left":0.20844415,"top":0.2406225,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20489 Rework Nudges - Phase 2 - change Nudges to use the indexed_at period. Use the enter key to load the work item.","depth":17,"bounds":{"left":0.1690492,"top":0.26336792,"width":0.112034574,"height":0.1217079},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Rework Nudges - Phase 2 - change Nudges to use the indexed_at period","depth":19,"bounds":{"left":0.17303856,"top":0.27414206,"width":0.08061835,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Cost-effective and faster nudges, Edit Parent","depth":18,"bounds":{"left":0.17303856,"top":0.31125298,"width":0.076961435,"height":0.0131683955},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"COST-EFFECTIVE AND FASTER NUDGES","depth":22,"bounds":{"left":0.17436835,"top":0.3124501,"width":0.07430186,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":18,"bounds":{"left":0.17303856,"top":0.3320032,"width":0.01761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489","depth":18,"bounds":{"left":0.1796875,"top":0.35794094,"width":0.019115692,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489","depth":20,"bounds":{"left":0.1796875,"top":0.35834,"width":0.019115692,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":18,"bounds":{"left":0.24268617,"top":0.35834,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20564 Investigate and fix why exceed Fontawesome package limits. Use the enter key to load the work item.","depth":17,"bounds":{"left":0.1690492,"top":0.38826814,"width":0.112034574,"height":0.121308856},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Investigate and fix why exceed Fontawesome package limits","depth":18,"bounds":{"left":0.17303856,"top":0.3990423,"width":0.06865027,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"MAINTENANCE","depth":19,"bounds":{"left":0.17436835,"top":0.4369513,"width":0.029089095,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ready for Dev","depth":18,"bounds":{"left":0.17303856,"top":0.45650437,"width":0.031083776,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20564","depth":18,"bounds":{"left":0.1796875,"top":0.48244214,"width":0.019115692,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20564","depth":20,"bounds":{"left":0.1796875,"top":0.4828412,"width":0.019115692,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":18,"bounds":{"left":0.23371011,"top":0.4828412,"width":0.0016622341,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"pull request","depth":17,"bounds":{"left":0.24052526,"top":0.4792498,"width":0.007978723,"height":0.01915403},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20372 AI Reports > Empty page design and promotion . Use the enter key to load the work item.","depth":17,"bounds":{"left":0.1690492,"top":0.51276934,"width":0.112034574,"height":0.121308856},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI Reports > Empty page design and promotion","depth":18,"bounds":{"left":0.17303856,"top":0.5235435,"width":0.08128324,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ REPORTS","depth":19,"bounds":{"left":0.17436835,"top":0.5614525,"width":0.023271276,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":18,"bounds":{"left":0.17303856,"top":0.5810056,"width":0.01761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20372","depth":18,"bounds":{"left":0.1796875,"top":0.6069433,"width":0.018783245,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20372","depth":20,"bounds":{"left":0.1796875,"top":0.60734236,"width":0.018783245,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":18,"bounds":{"left":0.24251994,"top":0.60734236,"width":0.002493351,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20157 Send email notification when the report is not generated. Use the enter key to load the work item.","depth":17,"bounds":{"left":0.1690492,"top":0.63727057,"width":0.112034574,"height":0.121308856},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Send email notification when the report is not generated","depth":18,"bounds":{"left":0.17303856,"top":0.6480447,"width":0.09125665,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ REPORTS","depth":19,"bounds":{"left":0.17436835,"top":0.68595374,"width":0.023271276,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":18,"bounds":{"left":0.17303856,"top":0.7055068,"width":0.01761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157","depth":18,"bounds":{"left":0.1796875,"top":0.73144454,"width":0.017952127,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157","depth":20,"bounds":{"left":0.1796875,"top":0.7318436,"width":0.017952127,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":18,"bounds":{"left":0.24268617,"top":0.7318436,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20508 Notify a user before the AJ Report expires. Use the enter key to load the work item.","depth":17,"bounds":{"left":0.1690492,"top":0.76177174,"width":0.112034574,"height":0.105347164},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notify a user before the AJ Report expires","depth":18,"bounds":{"left":0.17303856,"top":0.7725459,"width":0.092586435,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ REPORTS","depth":19,"bounds":{"left":0.17436835,"top":0.7944932,"width":0.023271276,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":18,"bounds":{"left":0.17303856,"top":0.81404626,"width":0.01761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20508","depth":18,"bounds":{"left":0.1796875,"top":0.83998406,"width":0.018949468,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20508","depth":20,"bounds":{"left":0.1796875,"top":0.84038305,"width":0.018949468,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":18,"bounds":{"left":0.24301861,"top":0.84038305,"width":0.0016622341,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20352 Sync opportunities without a local owner (user_id is null). Use the enter key to load the work item.","depth":17,"bounds":{"left":0.1690492,"top":0.87031126,"width":0.112034574,"height":0.121308856},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sync opportunities without a local owner (user_id is null)","depth":18,"bounds":{"left":0.17303856,"top":0.8810854,"width":0.08959442,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PLATFORM STABILITY","depth":19,"bounds":{"left":0.17436835,"top":0.9189944,"width":0.042054523,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":18,"bounds":{"left":0.17303856,"top":0.9385475,"width":0.01761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20352","depth":18,"bounds":{"left":0.1796875,"top":0.9644852,"width":0.018949468,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20352","depth":20,"bounds":{"left":0.1796875,"top":0.9648843,"width":0.018949468,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":18,"bounds":{"left":0.24251994,"top":0.9648843,"width":0.0026595744,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-19957 Upgrade BE libraries - Apr. Use the enter key to load the work item.","depth":17,"bounds":{"left":0.1690492,"top":0.9948124,"width":0.112034574,"height":0.005187571},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Upgrade BE libraries - Apr","depth":18,"bounds":{"left":0.17303856,"top":1.0,"width":0.057679523,"height":-0.005586624},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"MAINTENANCE","depth":19,"bounds":{"left":0.17436835,"top":1.0,"width":0.029089095,"height":-0.027533889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":18,"bounds":{"left":0.17303856,"top":1.0,"width":0.01761968,"height":-0.047086954},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-19957","depth":18,"bounds":{"left":0.1796875,"top":1.0,"width":0.017952127,"height":-0.07302475},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-19957","depth":20,"bounds":{"left":0.1796875,"top":1.0,"width":0.017952127,"height":-0.07342374},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":18,"bounds":{"left":0.24301861,"top":1.0,"width":0.0016622341,"height":-0.07342374},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"In DEV","depth":17,"bounds":{"left":0.29072472,"top":0.24022347,"width":0.024601065,"height":0.012769354},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"IN DEV","depth":19,"bounds":{"left":0.29072472,"top":0.2406225,"width":0.013962766,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":22,"bounds":{"left":0.30884308,"top":0.2406225,"width":0.002493351,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-9712 Change forever nudges to 1 year expiration. Use the enter key to load the work item.","depth":17,"bounds":{"left":0.28706783,"top":0.26336792,"width":0.112034574,"height":0.121308856},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Change forever nudges to 1 year expiration","depth":18,"bounds":{"left":0.29105717,"top":0.27414206,"width":0.071476065,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"COST-EFFECTIVE AND FASTER NUDGES","depth":19,"bounds":{"left":0.29238698,"top":0.3120511,"width":0.07413564,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In Dev","depth":18,"bounds":{"left":0.29105717,"top":0.33160415,"width":0.01462766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-9712","depth":18,"bounds":{"left":0.29770613,"top":0.3575419,"width":0.015458777,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712","depth":20,"bounds":{"left":0.29770613,"top":0.35794094,"width":0.015458777,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4.5","depth":18,"bounds":{"left":0.35189494,"top":0.35794094,"width":0.005984043,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"pull request","depth":17,"bounds":{"left":0.36120346,"top":0.35434955,"width":0.007978723,"height":0.01915403},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20566 AI Review - Q1 - Summary/Action items/Key Points. Use the enter key to load the work item.","depth":17,"bounds":{"left":0.28706783,"top":0.38786912,"width":0.112034574,"height":0.1217079},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI Review - Q1 - Summary/Action items/Key Points","depth":19,"bounds":{"left":0.29105717,"top":0.39864326,"width":0.08843085,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Growth - Maintain our competitive position, Edit Parent","depth":18,"bounds":{"left":0.29105717,"top":0.43575418,"width":0.1015625,"height":0.0131683955},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GROWTH - MAINTAIN OUR COMPETITIVE POSITION","depth":22,"bounds":{"left":0.29238698,"top":0.4369513,"width":0.098902926,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In Dev","depth":18,"bounds":{"left":0.29105717,"top":0.45650437,"width":0.01462766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20566","depth":18,"bounds":{"left":0.29770613,"top":0.48244214,"width":0.018949468,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20566","depth":20,"bounds":{"left":0.29770613,"top":0.4828412,"width":0.018949468,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":18,"bounds":{"left":0.36585772,"top":0.4828412,"width":0.002493351,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Code Review","depth":17,"bounds":{"left":0.40874335,"top":0.24022347,"width":0.038896278,"height":0.012769354},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"CODE REVIEW","depth":19,"bounds":{"left":0.40874335,"top":0.2406225,"width":0.02825798,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":22,"bounds":{"left":0.4409907,"top":0.2406225,"width":0.0026595744,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create work item","depth":17,"bounds":{"left":0.4010971,"top":0.25219473,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"JY-19798 Evaluation for AI Activity Types. Use the enter key to load the work item.","depth":17,"bounds":{"left":0.40508643,"top":0.26336792,"width":0.112034574,"height":0.10574621},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Evaluation for AI Activity Types","depth":19,"bounds":{"left":0.4090758,"top":0.27414206,"width":0.069148935,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Auto-detected activity type, Edit Parent","depth":18,"bounds":{"left":0.4090758,"top":0.2952913,"width":0.06615692,"height":0.0131683955},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AUTO-DETECTED ACTIVITY TYPE","depth":22,"bounds":{"left":0.41040558,"top":0.29648843,"width":0.06349734,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Code Review","depth":18,"bounds":{"left":0.4090758,"top":0.3160415,"width":0.028756648,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-19798","depth":18,"bounds":{"left":0.41572472,"top":0.34197924,"width":0.017952127,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-19798","depth":20,"bounds":{"left":0.41572472,"top":0.3423783,"width":0.017952127,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":18,"bounds":{"left":0.46974733,"top":0.3423783,"width":0.0014960107,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"pull request","depth":17,"bounds":{"left":0.4765625,"top":0.3387869,"width":0.007978723,"height":0.01915403},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create work item","depth":17,"bounds":{"left":0.4010971,"top":0.36113328,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"JY-20553 Delays in CRM Sync. Use the enter key to load the work item.","depth":17,"bounds":{"left":0.40508643,"top":0.37230647,"width":0.112034574,"height":0.10574621},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Delays in CRM Sync","depth":19,"bounds":{"left":0.4090758,"top":0.3830806,"width":0.044215426,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Platform Stability, Edit Parent","depth":18,"bounds":{"left":0.4090758,"top":0.40422985,"width":0.044714097,"height":0.0131683955},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PLATFORM STABILITY","depth":22,"bounds":{"left":0.41040558,"top":0.40542698,"width":0.042054523,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Code Review","depth":18,"bounds":{"left":0.4090758,"top":0.42498004,"width":0.028756648,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20553","depth":18,"bounds":{"left":0.41572472,"top":0.4509178,"width":0.018783245,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20553","depth":20,"bounds":{"left":0.41572472,"top":0.45131683,"width":0.018783245,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.5","depth":18,"bounds":{"left":0.46991357,"top":0.45131683,"width":0.005984043,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"pull request","depth":17,"bounds":{"left":0.4792221,"top":0.44772545,"width":0.007978723,"height":0.01915403},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create work item","depth":17,"bounds":{"left":0.4010971,"top":0.47007182,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"JY-20692 Issue with reconnecting Zoho. Use the enter key to load the work item.","depth":17,"bounds":{"left":0.40508643,"top":0.481245,"width":0.112034574,"height":0.105347164},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Issue with reconnecting Zoho","depth":18,"bounds":{"left":0.4090758,"top":0.49201915,"width":0.06582447,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SUPPORT TICKETS","depth":19,"bounds":{"left":0.41040558,"top":0.5139665,"width":0.03557181,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Code Review","depth":18,"bounds":{"left":0.4090758,"top":0.53351957,"width":0.028756648,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20692","depth":18,"bounds":{"left":0.41572472,"top":0.5594573,"width":0.018949468,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20692","depth":20,"bounds":{"left":0.41572472,"top":0.55985636,"width":0.018949468,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"pull request","depth":17,"bounds":{"left":0.4878657,"top":0.55626494,"width":0.007978723,"height":0.01915403},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20698 Les Mills activity types not pulling in. Use the enter key to load the work item.","depth":17,"bounds":{"left":0.40508643,"top":0.5897845,"width":0.112034574,"height":0.105347164},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Les Mills activity types not pulling in","depth":18,"bounds":{"left":0.4090758,"top":0.60055864,"width":0.079288565,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SUPPORT TICKETS","depth":19,"bounds":{"left":0.41040558,"top":0.62250596,"width":0.03557181,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Code Review","depth":18,"bounds":{"left":0.4090758,"top":0.6420591,"width":0.028756648,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20698","depth":18,"bounds":{"left":0.41572472,"top":0.6679968,"width":0.019115692,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20698","depth":20,"bounds":{"left":0.41572472,"top":0.6683959,"width":0.019115692,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":18,"bounds":{"left":0.48105052,"top":0.6683959,"width":0.0014960107,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"commit","depth":17,"bounds":{"left":0.4878657,"top":0.66480446,"width":0.007978723,"height":0.01915403},"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create work item in Code Review","depth":17,"bounds":{"left":0.40508643,"top":0.698324,"width":0.112034574,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":20,"bounds":{"left":0.4163896,"top":0.70590585,"width":0.014793883,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Blocked","depth":17,"bounds":{"left":0.52676195,"top":0.24022347,"width":0.018783245,"height":0.012769354},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"BLOCKED","depth":19,"bounds":{"left":0.52676195,"top":0.2406225,"width":0.018783245,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create work item in Blocked","depth":17,"bounds":{"left":0.523105,"top":0.26336792,"width":0.11186835,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":20,"bounds":{"left":0.5344083,"top":0.27094972,"width":0.014793883,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"QA","depth":17,"bounds":{"left":0.64461434,"top":0.24022347,"width":0.016456118,"height":0.012769354},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"QA","depth":19,"bounds":{"left":0.64461434,"top":0.2406225,"width":0.005817819,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":22,"bounds":{"left":0.6549202,"top":0.2406225,"width":0.0016622341,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create work item","depth":17,"bounds":{"left":0.6369681,"top":0.25219473,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"JY-18909 [Part2] Automated reports with Ask Jiminny. Use the enter key to load the work item.","depth":17,"bounds":{"left":0.6409575,"top":0.26336792,"width":0.112034574,"height":0.14046289},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[Part2] Automated reports with Ask Jiminny","depth":18,"bounds":{"left":0.6449468,"top":0.27414206,"width":0.07762633,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ REPORTS","depth":19,"bounds":{"left":0.6462766,"top":0.3120511,"width":0.023271276,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In QA","depth":18,"bounds":{"left":0.6449468,"top":0.33160415,"width":0.012799202,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI","depth":22,"bounds":{"left":0.64660907,"top":0.3507582,"width":0.005319149,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"BE","depth":22,"bounds":{"left":0.65791225,"top":0.3507582,"width":0.005817819,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FE","depth":22,"bounds":{"left":0.6697141,"top":0.3507582,"width":0.0056515955,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"QA","depth":22,"bounds":{"left":0.68134975,"top":0.3507582,"width":0.006482713,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-18909","depth":18,"bounds":{"left":0.6515958,"top":0.37669593,"width":0.018450798,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-18909","depth":20,"bounds":{"left":0.6515958,"top":0.37709498,"width":0.018450798,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":18,"bounds":{"left":0.70794547,"top":0.37709498,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"pull request","depth":17,"bounds":{"left":0.7150931,"top":0.3735036,"width":0.007978723,"height":0.01915403},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create work item in QA","depth":17,"bounds":{"left":0.6409575,"top":0.40702313,"width":0.112034574,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":20,"bounds":{"left":0.65226066,"top":0.41460496,"width":0.014960106,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"PO Acceptance","depth":17,"bounds":{"left":0.76263297,"top":0.24022347,"width":0.03374335,"height":0.012769354},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PO ACCEPTANCE","depth":19,"bounds":{"left":0.76263297,"top":0.2406225,"width":0.03374335,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create work item in PO Acceptance","depth":17,"bounds":{"left":0.75897604,"top":0.26336792,"width":0.112034574,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":20,"bounds":{"left":0.7702792,"top":0.27094972,"width":0.014960106,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Deploy","depth":17,"bounds":{"left":0.8806516,"top":0.24022347,"width":0.02642952,"height":0.012769354},"help_text":"","role_description":"heading","subrole":"AXUnknown"}]...
|
8936546692429516566
|
5913332018682773735
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board 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
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app
JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app
[JY-20543] AJ Reports > Tracking - Jira
[JY-20543] AJ Reports > Tracking - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
New Tab
New Tab
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot | Logged-activity
Userpilot | Logged-activity
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Feed — jiminny — Sentry
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Space navigation
Space navigation
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
6 Notifications
6 Notifications
Help
Help
Settings
Settings
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Platform Team
Platform Team
Board actions
Board actions
SE Kanban
SE Kanban
Board actions
Board actions
Capture Team
Capture Team
Board actions
Board actions
Enterprise Stability Issues 🤕
Enterprise Stability Issues 🤕
Board actions
Board actions
Processing Team
Processing Team
Board actions
Board actions
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New)
Jiminny (New)
Platform Team
Platform Team
Link contributing teams
Board actions
Board actions
Share
Automation
Give feedback
Give feedback
Enter full screen
Enter full screen
Summary
Summary
Timeline
Timeline
Backlog
Backlog
Active sprints
Active sprints
Calendar
Calendar
Reports
Reports
Testing Board
Testing Board
List
List
Forms
Forms
Components
Components
Development
Development
Code
Code
Security
Security
Releases
Releases
Deployments
Deployments
Archived work items
Archived work items
Pages
Pages
Shortcuts
Shortcuts
Slack integration
Slack integration
Reporting Center
Reporting Center
Add to navigation
As you type to search or apply filters, the board updates with work items to match.
Search on current page
Filter by assignee
Filter assignees by Lukas Kovalik
Filter assignees by Nikolay Ivanov
Filter assignees by Nikolay Nikolov
Filter assignees by Nikolay Yankov
Filter assignees by Steliyan Georgiev
Filter assignees by Unassigned
Epic
Epic
Type
Type
Label
Label
Quick filters
Quick filters
Complete sprint
Complete sprint
Sprint details
Sprint details
Group by Queries
Group
: Queries
Sprint insights
Sprint insights
View settings
View settings
More actions
More actions
Ready For DEV
READY FOR DEV
7
JY-20489 Rework Nudges - Phase 2 - change Nudges to use the indexed_at period. Use the enter key to load the work item.
Rework Nudges - Phase 2 - change Nudges to use the indexed_at period
Cost-effective and faster nudges, Edit Parent
COST-EFFECTIVE AND FASTER NUDGES
Backlog
JY-20489
JY-20489
5
JY-20564 Investigate and fix why exceed Fontawesome package limits. Use the enter key to load the work item.
Investigate and fix why exceed Fontawesome package limits
MAINTENANCE
Ready for Dev
JY-20564
JY-20564
1
pull request
JY-20372 AI Reports > Empty page design and promotion . Use the enter key to load the work item.
AI Reports > Empty page design and promotion
AJ REPORTS
Backlog
JY-20372
JY-20372
6
JY-20157 Send email notification when the report is not generated. Use the enter key to load the work item.
Send email notification when the report is not generated
AJ REPORTS
Backlog
JY-20157
JY-20157
2
JY-20508 Notify a user before the AJ Report expires. Use the enter key to load the work item.
Notify a user before the AJ Report expires
AJ REPORTS
Backlog
JY-20508
JY-20508
1
JY-20352 Sync opportunities without a local owner (user_id is null). Use the enter key to load the work item.
Sync opportunities without a local owner (user_id is null)
PLATFORM STABILITY
Backlog
JY-20352
JY-20352
4
JY-19957 Upgrade BE libraries - Apr. Use the enter key to load the work item.
Upgrade BE libraries - Apr
MAINTENANCE
Backlog
JY-19957
JY-19957
1
In DEV
IN DEV
2
JY-9712 Change forever nudges to 1 year expiration. Use the enter key to load the work item.
Change forever nudges to 1 year expiration
COST-EFFECTIVE AND FASTER NUDGES
In Dev
JY-9712
JY-9712
4.5
pull request
JY-20566 AI Review - Q1 - Summary/Action items/Key Points. Use the enter key to load the work item.
AI Review - Q1 - Summary/Action items/Key Points
Growth - Maintain our competitive position, Edit Parent
GROWTH - MAINTAIN OUR COMPETITIVE POSITION
In Dev
JY-20566
JY-20566
3
Code Review
CODE REVIEW
4
Create work item
JY-19798 Evaluation for AI Activity Types. Use the enter key to load the work item.
Evaluation for AI Activity Types
Auto-detected activity type, Edit Parent
AUTO-DETECTED ACTIVITY TYPE
Code Review
JY-19798
JY-19798
1
pull request
Create work item
JY-20553 Delays in CRM Sync. Use the enter key to load the work item.
Delays in CRM Sync
Platform Stability, Edit Parent
PLATFORM STABILITY
Code Review
JY-20553
JY-20553
3.5
pull request
Create work item
JY-20692 Issue with reconnecting Zoho. Use the enter key to load the work item.
Issue with reconnecting Zoho
SUPPORT TICKETS
Code Review
JY-20692
JY-20692
pull request
JY-20698 Les Mills activity types not pulling in. Use the enter key to load the work item.
Les Mills activity types not pulling in
SUPPORT TICKETS
Code Review
JY-20698
JY-20698
1
commit
Create work item in Code Review
Create
Blocked
BLOCKED
Create work item in Blocked
Create
QA
QA
1
Create work item
JY-18909 [Part2] Automated reports with Ask Jiminny. Use the enter key to load the work item.
[Part2] Automated reports with Ask Jiminny
AJ REPORTS
In QA
AI
BE
FE
QA
JY-18909
JY-18909
5
pull request
Create work item in QA
Create
PO Acceptance
PO ACCEPTANCE
Create work item in PO Acceptance
Create
Deploy...
|
53345
|
|
31922
|
649
|
41
|
2026-04-16T06:43:45.534009+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776321825534_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow Helpgithub.com/jiminny/app/pull/11879/changes#diff-0904129c6162834a7de4e1d17687db3902c2bc174e8247b8382758eef337b87c~ Google Gemini...M°Z For you - Confluence(6) Lukas Kovalik - Time Offu Product Growth Plattorm Userpiloprospect's scattered CRM data (Leads,Contacts, Accounts, Opportunities, andpipeline Stages) into a single, neat array andcaches it for quick access." Userpilot(fix(security): composer dependeno(8 JiminnyNew TabJy 20541 cleanup stale purged+ New TabThe Core Flow:findByProspectIdentifier()This is the workhorse method. When asked tofind a prospect (e.g., by the [EMAIL]), it goes through a strictsequence to find the data efficiently:1. The Cache Check( LOOKUP_RESULT_CACHE ): It first checksthe Laravel cache. If the prospect's datawas looked up recently, it returns thecached array immediately, bypassing thedatabase entirely.2. The "Internal" Bypass( LOOKUP_RESULT_INTERNAL ): If theidentifier is an email, it checks if itbelongs to a coworker (an internalcompany email). If it does, it caches andreturns an array of null s, preventingthe system from treating employees assales leads.3. The Database Query( LOOKUP_RESULT_DB orLOOKUP_RESULT_MISS ): If it's not in thecache, it queries the local database( $this->dbCache ). If absolutely nothingis found, it logs a "miss".4. The Stale Check: This is where yourprevious code comes in! It runs the newlyToune Contacrorlead tnrouen une$this->staleRecordValidator . If therecord is over 120 days old, it checks the• Enter a prompt for Geminil1 OpenJy 20541 cleanup stale purged crm objects #11879All commitsVasil-Jiminny wants to merge 37 commits into master from JY-20541-cLeanup-stale-purged-crm-objects [v tests/Unit/Listeners/Crm/RemoteCrmRecordDeletedListenerTest.php• Filter files..• F appv • Events/Crm• RemoteCrmRecordDeleted.phpE ListenersAcuiviuies/crmiE MatchCrmObject.php•Crm• RemoteCrmRecordDeletedLi…..7 ProvidersE EventServiceProvider.phpv = Services/Crmv E CrmObjects/ValidatorsD StaleRecordValidator.phpE CachedCrmServiceDecorator....E ProspectCache.phpv — tests/UnitListenersActivities/CrmE MatchCrmObjectTest.php7 CrmRemoteCrmRecordDeletedLi...• E Services/Crm |~ E CrmObjects/Validators* StaleRecordValidatorTest.phpE CachedCrmServiceDecorator...E ProspectCacheTest.php408209210211212213214215216219220224225ProvYour Jiminny chats aren't used to improve our models. Gemini is Alane can make mistakes, Inciualne aoout peodleYour privacy & GeminiSummarize page258RemoteCrmRecordDeletedListener ^ V Highlight All [ Match Case Match Diacritics = Whole Words 5 of 15 matchesC< >0 bl • | Daily - Platform • in 2mA100% CS•Thu 16 Apr 9:43:456 / 12 viewed•Awallind aporova+276 UUUUu• Viewedsevent = schis->createtvent(contact:.class, 1, 100);$configuration = $this->createMock(Configuration::class);scontact = suhis->crearemock concact..classr$exception = new Exception( 'Delete failed');$this->crmConfigurationRepository->expects($this->once())->method ('findById')->w1th 100.->willReturn($configuration);$this->crmEntityRepository->expects ($this->once())->method('findContactByConfiqurationAndId')->with($configuration, 1)→>willketurnscontact);scontacl-pexpects sunss-ponce->method ('delete')->willThrowException(Sexception);$this->logger->expects($this->once())->method ('error')->with(• [RemoteCrmRecordDeletedListener] Failed to delete CRM object,$this->callback(function ($context) {return isset (Scontext['error']) && $context['error'] === 'Deletefailed';sunis-pexpectcxce.con.cxceocion:.class).$this->expectExceptionMessage('Delete failed');Sthis->listener->handle($event);public function testHandleThrowsExceptionForUnknownModelClass: void$event = $this->createEvent('UnknownClass', 1, 100);$contiguration = $this->createMock(Contiguration::class);sunis=>crncontcurarlonkerostcorv-pexoects.sunls=soncely→>method ('findById')→>W1th 100)->willReturn($configuration);$this->expectException(RuntimeException::class);$this->expectExceptionMessage('Unknown model class: UnknownClass');sunss-purstener-pnanaletsevenc),...
|
NULL
|
8936540252176985056
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow Helpgithub.com/jiminny/app/pull/11879/changes#diff-0904129c6162834a7de4e1d17687db3902c2bc174e8247b8382758eef337b87c~ Google Gemini...M°Z For you - Confluence(6) Lukas Kovalik - Time Offu Product Growth Plattorm Userpiloprospect's scattered CRM data (Leads,Contacts, Accounts, Opportunities, andpipeline Stages) into a single, neat array andcaches it for quick access." Userpilot(fix(security): composer dependeno(8 JiminnyNew TabJy 20541 cleanup stale purged+ New TabThe Core Flow:findByProspectIdentifier()This is the workhorse method. When asked tofind a prospect (e.g., by the [EMAIL]), it goes through a strictsequence to find the data efficiently:1. The Cache Check( LOOKUP_RESULT_CACHE ): It first checksthe Laravel cache. If the prospect's datawas looked up recently, it returns thecached array immediately, bypassing thedatabase entirely.2. The "Internal" Bypass( LOOKUP_RESULT_INTERNAL ): If theidentifier is an email, it checks if itbelongs to a coworker (an internalcompany email). If it does, it caches andreturns an array of null s, preventingthe system from treating employees assales leads.3. The Database Query( LOOKUP_RESULT_DB orLOOKUP_RESULT_MISS ): If it's not in thecache, it queries the local database( $this->dbCache ). If absolutely nothingis found, it logs a "miss".4. The Stale Check: This is where yourprevious code comes in! It runs the newlyToune Contacrorlead tnrouen une$this->staleRecordValidator . If therecord is over 120 days old, it checks the• Enter a prompt for Geminil1 OpenJy 20541 cleanup stale purged crm objects #11879All commitsVasil-Jiminny wants to merge 37 commits into master from JY-20541-cLeanup-stale-purged-crm-objects [v tests/Unit/Listeners/Crm/RemoteCrmRecordDeletedListenerTest.php• Filter files..• F appv • Events/Crm• RemoteCrmRecordDeleted.phpE ListenersAcuiviuies/crmiE MatchCrmObject.php•Crm• RemoteCrmRecordDeletedLi…..7 ProvidersE EventServiceProvider.phpv = Services/Crmv E CrmObjects/ValidatorsD StaleRecordValidator.phpE CachedCrmServiceDecorator....E ProspectCache.phpv — tests/UnitListenersActivities/CrmE MatchCrmObjectTest.php7 CrmRemoteCrmRecordDeletedLi...• E Services/Crm |~ E CrmObjects/Validators* StaleRecordValidatorTest.phpE CachedCrmServiceDecorator...E ProspectCacheTest.php408209210211212213214215216219220224225ProvYour Jiminny chats aren't used to improve our models. Gemini is Alane can make mistakes, Inciualne aoout peodleYour privacy & GeminiSummarize page258RemoteCrmRecordDeletedListener ^ V Highlight All [ Match Case Match Diacritics = Whole Words 5 of 15 matchesC< >0 bl • | Daily - Platform • in 2mA100% CS•Thu 16 Apr 9:43:456 / 12 viewed•Awallind aporova+276 UUUUu• Viewedsevent = schis->createtvent(contact:.class, 1, 100);$configuration = $this->createMock(Configuration::class);scontact = suhis->crearemock concact..classr$exception = new Exception( 'Delete failed');$this->crmConfigurationRepository->expects($this->once())->method ('findById')->w1th 100.->willReturn($configuration);$this->crmEntityRepository->expects ($this->once())->method('findContactByConfiqurationAndId')->with($configuration, 1)→>willketurnscontact);scontacl-pexpects sunss-ponce->method ('delete')->willThrowException(Sexception);$this->logger->expects($this->once())->method ('error')->with(• [RemoteCrmRecordDeletedListener] Failed to delete CRM object,$this->callback(function ($context) {return isset (Scontext['error']) && $context['error'] === 'Deletefailed';sunis-pexpectcxce.con.cxceocion:.class).$this->expectExceptionMessage('Delete failed');Sthis->listener->handle($event);public function testHandleThrowsExceptionForUnknownModelClass: void$event = $this->createEvent('UnknownClass', 1, 100);$contiguration = $this->createMock(Contiguration::class);sunis=>crncontcurarlonkerostcorv-pexoects.sunls=soncely→>method ('findById')→>W1th 100)->willReturn($configuration);$this->expectException(RuntimeException::class);$this->expectExceptionMessage('Unknown model class: UnknownClass');sunss-purstener-pnanaletsevenc),...
|
31921
|
|
59740
|
1284
|
32
|
2026-04-20T13:58:27.475963+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776693507475_m1.jpg...
|
iTerm2
|
iTerm2
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelplall100% <ec2-user@ip-10-30-159-186:~8 Mon 20 Apr 16:58:271881DOCKERDEV (-zsh)• ₴2APP (-zsh)-zsh|screenpipe*• *5ec2-user@ip-10-30-159-186:~ (...root@fee32ffa4c48:/home/jiminny#php artisan crm:sync-field-metadata --teamId=711 --objectType=event --fieldId=ActivityDate --sync[2026-04-20 13:57:45] production.INF0: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command": "crm:sync-field-metadata","memoryBeforeCommandInMb" : 118.0, "memoryPeakBeforeCommandInMb": 118.0, "dd. trace_id": "69e630d400000000353621397d709f2b", "dd.span_id":"3834288663553941291"} {"correlation_id":"9be82743-c911-4cZe-9357-71139c35df4,"trace_id":"84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"}Syncing eventfield"ActivityDate" for Les Mills[2026-04-20 13:57:45]production.INFO: [SocialAccountService] Fetching token {"socialAccountId":45478, "provider":"salesforce","dd.trace_id":"69e630d400000000353621397d709f2b","dd.span_id":"7320388585759996904","dd.env": "none"} {"correlation_id":"58610d3b-5173-4e7d-8e9d-eefe36e68dca", "'trace_id":"84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"}[2026-04-20 13:57:45] production.INF0: [SocialAccountService] Token retrieved {"socialAccountId":45478, "provider":"salesforce","dd. trace_id" : "69e630d400000000353621397d709f2b", "dd.span_id":"7320388585759996904""dd.env": "none"} {"correlation_id":"58610d3b-5173-4e7d-8e9d-eefe36e68dca", "trace_id":"84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"}[2026-04-20 13:57:45]production.INFO:[EncryptedTokenManager] Generating access token. {"mode":"encrypted", "dd.trace_id":"69e630d400000000353621397d709f2b", "dd.span_id": "7320388585759996904", "dd.env": "none"} {"correlation_id":"58610d3b-5173-4e7d-8e9d-eefe36e68dca", "trace_id": "84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"'}[2026-04-20 13:57:45] production.INF0: [EncryptedTokenManager] Tokens not found in cache, decrypting {"social_account_id":45478, "dd. trace_id": "69e630d400000000353621397d709f2b", "dd.span_id":"7320388585759996904", "dd.env": "none"} {"correlation_id":"58610d3b-5173-4e7d-8e9d-eefe36e68dca", "trace_id":"84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"}[2026-04-20 13:57:45] production. INFO: [EncryptedTokenManager] Decrypting data key {"social_account_id":45478,"dd.tsace_id":"69e630d400000000353621397d709f2b", "dd. span_id" :"7320388585759996904", "dd. env": "none"} {"correlation_id":"58610d3b-5173-4e7d-8e9d-eefe36e68dca", "trace_id" : "84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"})[2026-04-2013:57:45] production.INF0: [EncryptedTokenManager] Decrypting tokens {"social_account_id":45478,"dd.trace_id":"69e630d400000000353621397d709f2b","dd.span_id" : "7320388585759996904", "dd.env": "none"} {"correlation_id":"58610d3b-5173-4e7d-8e9d-eefe36e68dca", "trace_id":"84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"}[2026-04-20 13:57:45] production.INF0: [Salesforce] Sending request {"endpoint":"https://lesmills.my.salesforce.com/services/data/v50.0/tooling/query/?q=%0A++++++++++++++++++SELECT%0A++++++++++++++++++++Id%2C+DataType%2C+DeveloperName%2C+Label%2C+Length%2C+Description%0A++++++++++++++++++FROM%0A++++++++++++++++++++FieldDefinition%0A++++++++++++++++++WHERE%OA++++++++++++++++++++DurableId+%3D+%27Event.ActivityDate%27 GET","team_id":711,"dd.trace_id":"69e630d400000000353621397d709f2b".,"dd.span_id":"7320388585759996904","dd.env" : "none"} {"correlation_id":"58610d3b-5173-4e7d-8e9d-eefe36e68dca", "trace_id":"84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"}[2026-04-20 13:57:46] production.ERROR: [Salesforce] Request exception [400] sObject type 'FieldDefinition' is not supported. {"url": "https://lesmills.my.salesforce.com/services/data/v50.0/tooling/query/?q=%0A++++++++++++++SELECT%0A++++++++++++++++++++Id%2C+DataType%2C+DeveloperName%2C+Label%2C+Length%2C+Description%0A++++++++++++++++++FROM%0A++++++++++++++++++++FieldDefinition%0A++++++++++++++++WHERE%OA++++++++++++++++++++DurableId+%3D+%27Event.ActivityDate%27",,"data" : {"headers" : {"Authorization": "Bearer 00D90000000fUsz!AOEAOKRIt62MP50BhF0_SPMdUfRNQaX22hSEy4ww1vkWOy7Y8vtMasenRvudh0QG9oI81aqNrLu.wGgkCiT09RHg0aQXiF_d"}},"response" : {"GuzzleHttp|\Psr7\\Stream":"[{\"message\":\"sObject type 'FieldDefinition'iserrorCode\":\"INVALID_TYPE\"}]"},"fields" : [],"dd.trace_id":"69e630d400000000353621397d709f2b","dd.span_id":"7320388585759996904","dd.env" : "none"} {"correlatiote7d-8e9d-eefe36e68dca", "trace_id": "84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"}[202400)duction.ERROR: sObject type 'FieldDefinition' is not supported. {"exception":"[object] (Jiminny\\Exceptions\\HttpBadRequestWithErrorReasonException(code:Jefinition'is not supported. at/home/jiminny/app/Services/Crm/Salesforce/Client.php:564)[sta#0• 114m 45s4,25 GB ices/Crm/Salesforce/Client.php(408): Jiminny\\Services|\Crm\\Salesforce\\Client->request('GET', 'https://lesmill...', Array)#1/home/jiminny/app/Services/Crm/Salesforce/Client.php(343): Jiminny\\Services\\Crm\\Salesforce\\Client->requestWithAutomaticReauthorize('GET', 'https://lesmill...', Array)#2/home/jiminny/app/Services/Crm/Salesforce/Client.php(236): Jiminny\\Services\\Crm\\Salesforce\\Client->get('https://lesmill...')#3/home/jiminny/app/Services/Crm/Salesforce/QueryHandler.php(56): Jiminny|\Services\\Crm\\Salesforce\\Client->callQueryApiAndGetQueryResults('https://lesmill...')#4/home/jiminny/app/Services/Crm/Salesforce/Service.php(388): Jiminny\\Services\\Crm\\Salesforce\\QueryHandler->metadata(*\\n, Array)#5/home/jiminny/app/Jobs/Crm/SyncFieldMetadata.php(64): Jiminny\\Services|\Crm\|Salesforced\Service->syncField(Object(Jiminny\\Models\\Crm\\Field))...
|
NULL
|
8936374413798876455
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelplall100% <ec2-user@ip-10-30-159-186:~8 Mon 20 Apr 16:58:271881DOCKERDEV (-zsh)• ₴2APP (-zsh)-zsh|screenpipe*• *5ec2-user@ip-10-30-159-186:~ (...root@fee32ffa4c48:/home/jiminny#php artisan crm:sync-field-metadata --teamId=711 --objectType=event --fieldId=ActivityDate --sync[2026-04-20 13:57:45] production.INF0: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command": "crm:sync-field-metadata","memoryBeforeCommandInMb" : 118.0, "memoryPeakBeforeCommandInMb": 118.0, "dd. trace_id": "69e630d400000000353621397d709f2b", "dd.span_id":"3834288663553941291"} {"correlation_id":"9be82743-c911-4cZe-9357-71139c35df4,"trace_id":"84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"}Syncing eventfield"ActivityDate" for Les Mills[2026-04-20 13:57:45]production.INFO: [SocialAccountService] Fetching token {"socialAccountId":45478, "provider":"salesforce","dd.trace_id":"69e630d400000000353621397d709f2b","dd.span_id":"7320388585759996904","dd.env": "none"} {"correlation_id":"58610d3b-5173-4e7d-8e9d-eefe36e68dca", "'trace_id":"84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"}[2026-04-20 13:57:45] production.INF0: [SocialAccountService] Token retrieved {"socialAccountId":45478, "provider":"salesforce","dd. trace_id" : "69e630d400000000353621397d709f2b", "dd.span_id":"7320388585759996904""dd.env": "none"} {"correlation_id":"58610d3b-5173-4e7d-8e9d-eefe36e68dca", "trace_id":"84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"}[2026-04-20 13:57:45]production.INFO:[EncryptedTokenManager] Generating access token. {"mode":"encrypted", "dd.trace_id":"69e630d400000000353621397d709f2b", "dd.span_id": "7320388585759996904", "dd.env": "none"} {"correlation_id":"58610d3b-5173-4e7d-8e9d-eefe36e68dca", "trace_id": "84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"'}[2026-04-20 13:57:45] production.INF0: [EncryptedTokenManager] Tokens not found in cache, decrypting {"social_account_id":45478, "dd. trace_id": "69e630d400000000353621397d709f2b", "dd.span_id":"7320388585759996904", "dd.env": "none"} {"correlation_id":"58610d3b-5173-4e7d-8e9d-eefe36e68dca", "trace_id":"84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"}[2026-04-20 13:57:45] production. INFO: [EncryptedTokenManager] Decrypting data key {"social_account_id":45478,"dd.tsace_id":"69e630d400000000353621397d709f2b", "dd. span_id" :"7320388585759996904", "dd. env": "none"} {"correlation_id":"58610d3b-5173-4e7d-8e9d-eefe36e68dca", "trace_id" : "84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"})[2026-04-2013:57:45] production.INF0: [EncryptedTokenManager] Decrypting tokens {"social_account_id":45478,"dd.trace_id":"69e630d400000000353621397d709f2b","dd.span_id" : "7320388585759996904", "dd.env": "none"} {"correlation_id":"58610d3b-5173-4e7d-8e9d-eefe36e68dca", "trace_id":"84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"}[2026-04-20 13:57:45] production.INF0: [Salesforce] Sending request {"endpoint":"https://lesmills.my.salesforce.com/services/data/v50.0/tooling/query/?q=%0A++++++++++++++++++SELECT%0A++++++++++++++++++++Id%2C+DataType%2C+DeveloperName%2C+Label%2C+Length%2C+Description%0A++++++++++++++++++FROM%0A++++++++++++++++++++FieldDefinition%0A++++++++++++++++++WHERE%OA++++++++++++++++++++DurableId+%3D+%27Event.ActivityDate%27 GET","team_id":711,"dd.trace_id":"69e630d400000000353621397d709f2b".,"dd.span_id":"7320388585759996904","dd.env" : "none"} {"correlation_id":"58610d3b-5173-4e7d-8e9d-eefe36e68dca", "trace_id":"84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"}[2026-04-20 13:57:46] production.ERROR: [Salesforce] Request exception [400] sObject type 'FieldDefinition' is not supported. {"url": "https://lesmills.my.salesforce.com/services/data/v50.0/tooling/query/?q=%0A++++++++++++++SELECT%0A++++++++++++++++++++Id%2C+DataType%2C+DeveloperName%2C+Label%2C+Length%2C+Description%0A++++++++++++++++++FROM%0A++++++++++++++++++++FieldDefinition%0A++++++++++++++++WHERE%OA++++++++++++++++++++DurableId+%3D+%27Event.ActivityDate%27",,"data" : {"headers" : {"Authorization": "Bearer 00D90000000fUsz!AOEAOKRIt62MP50BhF0_SPMdUfRNQaX22hSEy4ww1vkWOy7Y8vtMasenRvudh0QG9oI81aqNrLu.wGgkCiT09RHg0aQXiF_d"}},"response" : {"GuzzleHttp|\Psr7\\Stream":"[{\"message\":\"sObject type 'FieldDefinition'iserrorCode\":\"INVALID_TYPE\"}]"},"fields" : [],"dd.trace_id":"69e630d400000000353621397d709f2b","dd.span_id":"7320388585759996904","dd.env" : "none"} {"correlatiote7d-8e9d-eefe36e68dca", "trace_id": "84e2970d-3da5-44f4-b6e8-b3ed87b1d1b5"}[202400)duction.ERROR: sObject type 'FieldDefinition' is not supported. {"exception":"[object] (Jiminny\\Exceptions\\HttpBadRequestWithErrorReasonException(code:Jefinition'is not supported. at/home/jiminny/app/Services/Crm/Salesforce/Client.php:564)[sta#0• 114m 45s4,25 GB ices/Crm/Salesforce/Client.php(408): Jiminny\\Services|\Crm\\Salesforce\\Client->request('GET', 'https://lesmill...', Array)#1/home/jiminny/app/Services/Crm/Salesforce/Client.php(343): Jiminny\\Services\\Crm\\Salesforce\\Client->requestWithAutomaticReauthorize('GET', 'https://lesmill...', Array)#2/home/jiminny/app/Services/Crm/Salesforce/Client.php(236): Jiminny\\Services\\Crm\\Salesforce\\Client->get('https://lesmill...')#3/home/jiminny/app/Services/Crm/Salesforce/QueryHandler.php(56): Jiminny|\Services\\Crm\\Salesforce\\Client->callQueryApiAndGetQueryResults('https://lesmill...')#4/home/jiminny/app/Services/Crm/Salesforce/Service.php(388): Jiminny\\Services\\Crm\\Salesforce\\QueryHandler->metadata(*\\n, Array)#5/home/jiminny/app/Jobs/Crm/SyncFieldMetadata.php(64): Jiminny\\Services|\Crm\|Salesforced\Service->syncField(Object(Jiminny\\Models\\Crm\\Field))...
|
59739
|
|
37173
|
765
|
6
|
2026-04-16T12:17:07.639676+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776341827639_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
SackFileEditViewHistoryWindowHelpQ Search Jiminny SackFileEditViewHistoryWindowHelpQ Search Jiminny IncJiminny ...0. Nikolay Nikolov ®DMs= Unreadse) Threads6 HuddlesDrafts & sent8 Directories• MessagesP Filesuinolay rinolew t cuouAmOautha mі изгьрмя: https:/jithub.com/jiminy/aThursday, April 9th~)#11926 SRD-6771 |JY-20622 | Fix OAuthJIRA• SRD-6771 |JY-20622AchivityEh External connectionsFiles# Starred8 jiminny-x-integrati...platform-inner-teamMore# Channels# ai-chapter# alerts# backend# contusion-clinic# curiosity lab# engineering# frontendi# general# infra-changes# jiminny-bg# platform-tickets# product_launchesac random* releases# sofia-office# supportac thank-vous# the people of iimi....Direct messages2. Nikolay Nikolov •!8 Stoyan Tanev€. Vasil VasilevGalva Dimitroval. Nikolay Ivanov®. Aneliya Angelova3 Aneliya Angelova, ...P. Ves&. Steliyan Georgiev3 Adelina Petrova, lli...Deployment notes:• NoneCommentsjiminny/app| Apr 9th Added by GitHubLukas Kovalik 10:53 AMможе и да ти умре по време на ехесако трае дългоно май не бяха толкова многоNikolay Nikolov ®| 10:53 AMне, то не беше сетнато изобщои после прави единични упдейти196 са самоNikolay Nikolov '®! 11:37 AMТия имат по няколко сделки на активити: [URL_WITH_CREDENTIALS] в gooдlе с негоИзкарва ми бутон за Recoverнешо да не е станало ?Lukas Kovalik 2:00 PMздрастиsnak,ce нe oasopaxнапоаво звонниаз преди няколко часа се мьчих с него но уж е на редYou missed a nuadle MiSSED2:21. PMINikolav Nikolov was in the huddle for Om.**:Apps# Jira CloudB Toastail Gonole Cale.Lukas KovalikLukas Kovalk 3:17 PMбях излязьл да сменя гумите, пиши ако ти тоябвам ощеMessage Nikolay Nikolov I0l LunchAa+ Createe40lO 5100% C/ 8 • Thu 16 Apr 15:17:07ASK ROVO L ® Tô3 €1Hide details+v© Writewhen a new Playbook is created.are being Imported upon new Playbook creations to get Importedo Summarise comments =Analyzing vv DetailsAssignee@ Lukas KovalikReporterStoyan TomovRequest Typei Report a bugKnowledge base# View related a…..Priority level(P2 MediumDev TeamPlatform team]OrganizationLes MillsCanny LinksOpen Canny Links> More fields Labels, Time tracking, Type of Infos...> Automation 4 Rule executions> featureOS OpenfeatureOSv IntercomShowing 1 out of 1 linked conversationsQ Christopher Wilton |>> Sentry al Linked IssuesCreated 4 hours agoUpdated 42 minutes agoộ Configure...
|
NULL
|
8936273987197939201
|
NULL
|
click
|
ocr
|
NULL
|
SackFileEditViewHistoryWindowHelpQ Search Jiminny SackFileEditViewHistoryWindowHelpQ Search Jiminny IncJiminny ...0. Nikolay Nikolov ®DMs= Unreadse) Threads6 HuddlesDrafts & sent8 Directories• MessagesP Filesuinolay rinolew t cuouAmOautha mі изгьрмя: https:/jithub.com/jiminy/aThursday, April 9th~)#11926 SRD-6771 |JY-20622 | Fix OAuthJIRA• SRD-6771 |JY-20622AchivityEh External connectionsFiles# Starred8 jiminny-x-integrati...platform-inner-teamMore# Channels# ai-chapter# alerts# backend# contusion-clinic# curiosity lab# engineering# frontendi# general# infra-changes# jiminny-bg# platform-tickets# product_launchesac random* releases# sofia-office# supportac thank-vous# the people of iimi....Direct messages2. Nikolay Nikolov •!8 Stoyan Tanev€. Vasil VasilevGalva Dimitroval. Nikolay Ivanov®. Aneliya Angelova3 Aneliya Angelova, ...P. Ves&. Steliyan Georgiev3 Adelina Petrova, lli...Deployment notes:• NoneCommentsjiminny/app| Apr 9th Added by GitHubLukas Kovalik 10:53 AMможе и да ти умре по време на ехесако трае дългоно май не бяха толкова многоNikolay Nikolov ®| 10:53 AMне, то не беше сетнато изобщои после прави единични упдейти196 са самоNikolay Nikolov '®! 11:37 AMТия имат по няколко сделки на активити: [URL_WITH_CREDENTIALS] в gooдlе с негоИзкарва ми бутон за Recoverнешо да не е станало ?Lukas Kovalik 2:00 PMздрастиsnak,ce нe oasopaxнапоаво звонниаз преди няколко часа се мьчих с него но уж е на редYou missed a nuadle MiSSED2:21. PMINikolav Nikolov was in the huddle for Om.**:Apps# Jira CloudB Toastail Gonole Cale.Lukas KovalikLukas Kovalk 3:17 PMбях излязьл да сменя гумите, пиши ако ти тоябвам ощеMessage Nikolay Nikolov I0l LunchAa+ Createe40lO 5100% C/ 8 • Thu 16 Apr 15:17:07ASK ROVO L ® Tô3 €1Hide details+v© Writewhen a new Playbook is created.are being Imported upon new Playbook creations to get Importedo Summarise comments =Analyzing vv DetailsAssignee@ Lukas KovalikReporterStoyan TomovRequest Typei Report a bugKnowledge base# View related a…..Priority level(P2 MediumDev TeamPlatform team]OrganizationLes MillsCanny LinksOpen Canny Links> More fields Labels, Time tracking, Type of Infos...> Automation 4 Rule executions> featureOS OpenfeatureOSv IntercomShowing 1 out of 1 linked conversationsQ Christopher Wilton |>> Sentry al Linked IssuesCreated 4 hours agoUpdated 42 minutes agoộ Configure...
|
37171
|
|
71030
|
1685
|
3
|
2026-04-22T11:54:13.851076+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776858853851_m2.jpg...
|
Slack
|
platform-inner-team (Channel) - Jiminny Inc - 1 ne platform-inner-team (Channel) - Jiminny Inc - 1 new item - Slack...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
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
c-learning-people
confusion-clinic
curiosity_lab
deal-insights-dev
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Nikolay Yankov
Nikolay Nikolov
Aneliya Angelova
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Petko Kashinski
Vasil Vasilev
Galya Dimitrova
Stefka Stoyanova
Stoyan Tomov
Stoyan Tanev
Nikolay Ivanov
Jira Cloud
Toast
Messages
Messages
Channel Overview
Channel Overview
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Nikolay Yankov
Today at 11:21:25 AM
11:21 AM
Днес за AI Chapter-a ще говорим за MCP Server, който ще започнем скоро да правим ние.
Вижте
Confluence страницата
Confluence страницата
, там е описано какво ще правим в общи линии, добра насока е за старт.
Today at 11:22:16 AM
11:22
Репортите са деплойнати
3 reactions, react with raised hands emoji
3
Add reaction…
Nikolay Nikolov
Today at 12:36:39 PM
12:36 PM
https://github.com/jiminny/app/pull/11999
https://github.com/jiminny/app/pull/11999
#11999 Optimize crm sync queue
#11999 Optimize crm sync queue
JIRA:
JY-20723
JY-20723
Deployment notes:
• None
Changes:
• remove job extended visibility of 6 H
Show more
Comments
2
jiminny/app
jiminny/app
|
Today at 12:24 PM
|
Added by
GitHub
GitHub
Nikolay Nikolov
Today at 12:42:39 PM
12:42 PM
махнах и delay-a на webhooks, но, само update са тези които пишат в Редис, има и други които извършват действия - merge, delete ...
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
New
Nikolay Nikolov
Today at 2:39:51 PM
2:39 PM
създадох един таск - грешката е спряла:
https://jiminny.atlassian.net/browse/JY-20728
https://jiminny.atlassian.net/browse/JY-20728
JY-20728 [HubSpot] Find the root cause of 429 hit and tweak API client rate …
JY-20728 [HubSpot] Find the root cause of 429 hit and tweak API client rate …
Status:
Backlog
Type:
Story
Assignee:
Unassigned
Priority:
Medium
Sync thread
Sync thread
sparkles emoji AI Summarise
AI Summarise
More actions...
Added by
Jira Cloud
Jira Cloud
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Ivanov
Today at 2:42:14 PM
2:42 PM
https://github.com/jiminny/app/pull/11981
https://github.com/jiminny/app/pull/11981
, може ли някой да погледне
1 reaction, react with +1 emoji
1
Add reaction…
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Search for: datadog, 1 of 4 suggestions
Channel platform-inner-team
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.0056515955,"top":0.058260176,"width":0.011968086,"height":0.028731046},"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.0029920214,"top":0.10055866,"width":0.017287234,"height":0.054269753},"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.0066489363,"top":0.13806863,"width":0.009973404,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.0029920214,"top":0.15482841,"width":0.017287234,"height":0.054269753},"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.0076462766,"top":0.19233839,"width":0.007978723,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.0029920214,"top":0.20909816,"width":0.017287234,"height":0.054269753},"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.004986702,"top":0.24660814,"width":0.012965426,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.0029920214,"top":0.26336792,"width":0.017287234,"height":0.054269753},"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.0076462766,"top":0.3008779,"width":0.0076462766,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.0029920214,"top":0.31763768,"width":0.017287234,"height":0.054269753},"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.00731383,"top":0.35514766,"width":0.008643617,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.0029920214,"top":0.3719074,"width":0.017287234,"height":0.054269753},"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.006981383,"top":0.4094174,"width":0.008976064,"height":0.0103751},"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"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.042220745,"top":0.11173184,"width":0.022273935,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.042220745,"top":0.13407822,"width":0.011968086,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.042220745,"top":0.15642458,"width":0.018284574,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"c-learning-people","depth":23,"bounds":{"left":0.042220745,"top":0.17877094,"width":0.038231384,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.042220745,"top":0.20111732,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.042220745,"top":0.22346368,"width":0.027593086,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"deal-insights-dev","depth":23,"bounds":{"left":0.042220745,"top":0.24581006,"width":0.03723404,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.042220745,"top":0.26815644,"width":0.025598405,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"bounds":{"left":0.042220745,"top":0.2905028,"width":0.018949468,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.042220745,"top":0.31284916,"width":0.015957447,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"bounds":{"left":0.042220745,"top":0.33519554,"width":0.029587766,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.042220745,"top":0.3575419,"width":0.022938829,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"people-with-copilot-licences","depth":23,"bounds":{"left":0.042220745,"top":0.37988827,"width":0.045212764,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"people-with-zoom-phone-licences","depth":23,"bounds":{"left":0.042220745,"top":0.40223464,"width":0.045877658,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"platform-team","depth":23,"bounds":{"left":0.042220745,"top":0.424581,"width":0.03125,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.042220745,"top":0.44692737,"width":0.034906916,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.042220745,"top":0.46927375,"width":0.03856383,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.042220745,"top":0.49162012,"width":0.01662234,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.042220745,"top":0.5139665,"width":0.018284574,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.042220745,"top":0.5363129,"width":0.024268618,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.042220745,"top":0.5586592,"width":0.016954787,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.042220745,"top":0.5810056,"width":0.024268618,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.042220745,"top":0.60335195,"width":0.04488032,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":24,"bounds":{"left":0.042220745,"top":0.6560255,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":",","depth":24,"bounds":{"left":0.080784574,"top":0.6560255,"width":0.0026595744,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":24,"bounds":{"left":0.08344415,"top":0.6560255,"width":0.012965426,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":",","depth":24,"bounds":{"left":0.09607713,"top":0.6735834,"width":0.0003324468,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":24,"bounds":{"left":0.09607713,"top":0.6735834,"width":0.0003324468,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.042220745,"top":0.6783719,"width":0.032912236,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"bounds":{"left":0.042220745,"top":0.7007183,"width":0.034242023,"height":0.008778931},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.03756649,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Mario Georgiev","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.033909574,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.034242023,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Gabriela Dureva","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.03523936,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.034242023,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.026263298,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.034906916,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.03756649,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.030585106,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.028922873,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.031914894,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.021609042,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.011635638,"height":0.0007980846},"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"bounds":{"left":0.10206117,"top":0.09177973,"width":0.030585106,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"bounds":{"left":0.111369684,"top":0.10055866,"width":0.01861702,"height":0.012769354},"role_description":"text"},{"role":"AXRadioButton","text":"Channel Overview","depth":18,"bounds":{"left":0.13397606,"top":0.09177973,"width":0.047539894,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Channel Overview","depth":20,"bounds":{"left":0.14328457,"top":0.10055866,"width":0.03557181,"height":0.012769354},"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"bounds":{"left":0.18284574,"top":0.09177973,"width":0.020279255,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"bounds":{"left":0.20279256,"top":0.09177973,"width":0.010970744,"height":0.030327214},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.015625,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.0076462766,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.013962766,"height":0.0007980846},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"bounds":{"left":0.15026596,"top":0.12689546,"width":0.025265958,"height":0.022346368},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Yankov","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 11:21:25 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:21 AM","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Днес за AI Chapter-a ще говорим за MCP Server, който ще започнем скоро да правим ние.","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Вижте","depth":26,"role_description":"text"},{"role":"AXLink","text":"Confluence страницата","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Confluence страницата","depth":27,"role_description":"text"},{"role":"AXStaticText","text":", там е описано какво ще правим в общи линии, добра насока е за старт.","depth":26,"role_description":"text"},{"role":"AXLink","text":"Today at 11:22:16 AM","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:22","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Репортите са деплойнати","depth":26,"role_description":"text"},{"role":"AXCheckBox","text":"3 reactions, react with raised hands emoji","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":27,"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Nikolov","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 12:36:39 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:36 PM","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/11999","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/11999","depth":27,"role_description":"text"},{"role":"AXLink","text":"#11999 Optimize crm sync queue","depth":27,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"#11999 Optimize crm sync queue","depth":28,"role_description":"text"},{"role":"AXStaticText","text":"JIRA:","depth":27,"role_description":"text"},{"role":"AXLink","text":"JY-20723","depth":27,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"JY-20723","depth":28,"role_description":"text"},{"role":"AXStaticText","text":"Deployment notes:","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"• None","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Changes:","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"• remove job extended visibility of 6 H","depth":27,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":27,"bounds":{"left":0.12333777,"top":0.11572227,"width":0.024601065,"height":0.008778931},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Comments","depth":28,"bounds":{"left":0.12333777,"top":0.12609737,"width":0.023936171,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"bounds":{"left":0.12333777,"top":0.14365523,"width":0.0029920214,"height":0.014365523},"role_description":"text"},{"role":"AXLink","text":"jiminny/app","depth":27,"bounds":{"left":0.1299867,"top":0.16679968,"width":0.020611702,"height":0.011173184},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"jiminny/app","depth":28,"bounds":{"left":0.1299867,"top":0.16679968,"width":0.020611702,"height":0.011173184},"role_description":"text"},{"role":"AXStaticText","text":"|","depth":27,"bounds":{"left":0.15026596,"top":0.16679968,"width":0.0033244682,"height":0.011173184},"role_description":"text"},{"role":"AXStaticText","text":"Today at 12:24 PM","depth":27,"bounds":{"left":0.15325798,"top":0.16679968,"width":0.03324468,"height":0.011173184},"role_description":"text"},{"role":"AXStaticText","text":"|","depth":27,"bounds":{"left":0.18650267,"top":0.16679968,"width":0.0029920214,"height":0.011173184},"role_description":"text"},{"role":"AXStaticText","text":"Added by","depth":27,"bounds":{"left":0.18916224,"top":0.16679968,"width":0.016954787,"height":0.011173184},"role_description":"text"},{"role":"AXLink","text":"GitHub","depth":27,"bounds":{"left":0.12333777,"top":0.18435754,"width":0.012632979,"height":0.011173184},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"GitHub","depth":28,"bounds":{"left":0.12333777,"top":0.18435754,"width":0.012632979,"height":0.011173184},"role_description":"text"},{"role":"AXButton","text":"Nikolay Nikolov","depth":25,"bounds":{"left":0.11801862,"top":0.207502,"width":0.035904255,"height":0.017557861},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.15359043,"top":0.20909816,"width":0.0026595744,"height":0.014365523},"role_description":"text"},{"role":"AXLink","text":"Today at 12:42:39 PM","depth":25,"bounds":{"left":0.15625,"top":0.21149242,"width":0.01761968,"height":0.011173184},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:42 PM","depth":26,"bounds":{"left":0.15625,"top":0.21149242,"width":0.01761968,"height":0.011173184},"role_description":"text"},{"role":"AXStaticText","text":"махнах и delay-a на webhooks, но, само update са тези които пишат в Редис, има и други които извършват действия - merge, delete ...","depth":26,"bounds":{"left":0.11801862,"top":0.22665602,"width":0.09773936,"height":0.06703911},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.13730054,"top":0.19393456,"width":0.010638298,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.14793883,"top":0.19393456,"width":0.010638298,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.15857713,"top":0.19393456,"width":0.010638298,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.16921543,"top":0.19393456,"width":0.010638298,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"bounds":{"left":0.17985372,"top":0.19393456,"width":0.010638298,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"bounds":{"left":0.22340426,"top":0.19393456,"width":0.0003324468,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"bounds":{"left":0.22340426,"top":0.19393456,"width":0.0003324468,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"bounds":{"left":0.22340426,"top":0.19393456,"width":0.0003324468,"height":0.025538707},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New","depth":23,"bounds":{"left":0.21343085,"top":0.29130086,"width":0.00930851,"height":0.012769354},"role_description":"text"},{"role":"AXButton","text":"Nikolay Nikolov","depth":25,"bounds":{"left":0.11801862,"top":0.30167598,"width":0.035904255,"height":0.017557861},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.15359043,"top":0.30327216,"width":0.0026595744,"height":0.014365523},"role_description":"text"},{"role":"AXLink","text":"Today at 2:39:51 PM","depth":25,"bounds":{"left":0.15625,"top":0.3056664,"width":0.015292553,"height":0.011173184},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:39 PM","depth":26,"bounds":{"left":0.15625,"top":0.3056664,"width":0.015292553,"height":0.011173184},"role_description":"text"},{"role":"AXStaticText","text":"създадох един таск - грешката е спряла:","depth":26,"bounds":{"left":0.11801862,"top":0.32083002,"width":0.093417555,"height":0.014365523},"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/JY-20728","depth":26,"bounds":{"left":0.11801862,"top":0.33838788,"width":0.10106383,"height":0.014365523},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/JY-20728","depth":27,"bounds":{"left":0.11801862,"top":0.33838788,"width":0.10106383,"height":0.014365523},"role_description":"text"},{"role":"AXLink","text":"JY-20728 [HubSpot] Find the root cause of 429 hit and tweak API client rate …","depth":28,"bounds":{"left":0.12333777,"top":0.36073422,"width":0.09507979,"height":0.031923383},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"JY-20728 [HubSpot] Find the root cause of 429 hit and tweak API client rate …","depth":29,"bounds":{"left":0.12333777,"top":0.36073422,"width":0.09507979,"height":0.031923383},"role_description":"text"},{"role":"AXStaticText","text":"Status:","depth":27,"bounds":{"left":0.12333777,"top":0.4038308,"width":0.013962766,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Backlog","depth":27,"bounds":{"left":0.13696809,"top":0.4038308,"width":0.015625,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Type:","depth":27,"bounds":{"left":0.16555852,"top":0.4038308,"width":0.011635638,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Story","depth":27,"bounds":{"left":0.1768617,"top":0.4038308,"width":0.010305851,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Assignee:","depth":27,"bounds":{"left":0.12333777,"top":0.4237829,"width":0.018949468,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Unassigned","depth":27,"bounds":{"left":0.14228724,"top":0.4237829,"width":0.022273935,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Priority:","depth":27,"bounds":{"left":0.17785904,"top":0.4237829,"width":0.016289894,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Medium","depth":27,"bounds":{"left":0.19381648,"top":0.4237829,"width":0.016289894,"height":0.012769354},"role_description":"text"},{"role":"AXButton","text":"Sync thread","depth":27,"bounds":{"left":0.12333777,"top":0.4501197,"width":0.027925532,"height":0.022346368},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sync thread","depth":29,"bounds":{"left":0.12599733,"top":0.45411015,"width":0.022606382,"height":0.012769354},"role_description":"text"},{"role":"AXButton","text":"sparkles emoji AI Summarise","depth":27,"bounds":{"left":0.15392287,"top":0.4501197,"width":0.03856383,"height":0.022346368},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"AI Summarise","depth":29,"bounds":{"left":0.16223404,"top":0.45411015,"width":0.027260639,"height":0.012769354},"role_description":"text"},{"role":"AXComboBox","text":"More actions...","depth":28,"bounds":{"left":0.12333777,"top":0.47885075,"width":0.0631649,"height":0.022346368},"placeholder":"More actions...","role_description":"combo box","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Added by","depth":27,"bounds":{"left":0.12333777,"top":0.51077414,"width":0.01761968,"height":0.011173184},"role_description":"text"},{"role":"AXLink","text":"Jira Cloud","depth":27,"bounds":{"left":0.140625,"top":0.51077414,"width":0.01761968,"height":0.011173184},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jira Cloud","depth":28,"bounds":{"left":0.140625,"top":0.51077414,"width":0.01761968,"height":0.011173184},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.13730054,"top":0.28810853,"width":0.010638298,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.14793883,"top":0.28810853,"width":0.010638298,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.15857713,"top":0.28810853,"width":0.010638298,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.16921543,"top":0.28810853,"width":0.010638298,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"bounds":{"left":0.17985372,"top":0.28810853,"width":0.010638298,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"bounds":{"left":0.22340426,"top":0.28810853,"width":0.0003324468,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"bounds":{"left":0.22340426,"top":0.28810853,"width":0.0003324468,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"bounds":{"left":0.22340426,"top":0.28810853,"width":0.0003324468,"height":0.025538707},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Ivanov","depth":25,"bounds":{"left":0.11801862,"top":0.5323224,"width":0.03324468,"height":0.017557861},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"bounds":{"left":0.1512633,"top":0.5339186,"width":0.0026595744,"height":0.014365523},"role_description":"text"},{"role":"AXLink","text":"Today at 2:42:14 PM","depth":25,"bounds":{"left":0.15359043,"top":0.5363129,"width":0.015292553,"height":0.011173184},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:42 PM","depth":26,"bounds":{"left":0.15359043,"top":0.5363129,"width":0.015292553,"height":0.011173184},"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/11981","depth":26,"bounds":{"left":0.11801862,"top":0.5514765,"width":0.09474734,"height":0.014365523},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/11981","depth":27,"bounds":{"left":0.11801862,"top":0.5514765,"width":0.09474734,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":", може ли някой да погледне","depth":26,"bounds":{"left":0.11801862,"top":0.5514765,"width":0.095744684,"height":0.031923383},"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with +1 emoji","depth":26,"bounds":{"left":0.11801862,"top":0.58818835,"width":0.014295213,"height":0.01915403},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":27,"bounds":{"left":0.12732713,"top":0.5913807,"width":0.0023271276,"height":0.011971269},"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":26,"bounds":{"left":0.13331117,"top":0.58818835,"width":0.011635638,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"bounds":{"left":0.13730054,"top":0.51875496,"width":0.010638298,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"bounds":{"left":0.14793883,"top":0.51875496,"width":0.010638298,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"bounds":{"left":0.15857713,"top":0.51875496,"width":0.010638298,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"bounds":{"left":0.16921543,"top":0.51875496,"width":0.010638298,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"bounds":{"left":0.17985372,"top":0.51875496,"width":0.010638298,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"bounds":{"left":0.22340426,"top":0.51875496,"width":0.0003324468,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"bounds":{"left":0.22340426,"top":0.51875496,"width":0.0003324468,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"bounds":{"left":0.22340426,"top":0.51875496,"width":0.0003324468,"height":0.025538707},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"","depth":24,"bounds":{"left":0.10372341,"top":0.6272945,"width":0.118351065,"height":0.030327214},"value":"","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Search for: datadog, 1 of 4 suggestions","depth":11,"bounds":{"left":0.0,"top":0.7126895,"width":0.024933511,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Channel platform-inner-team","depth":11,"bounds":{"left":0.0,"top":0.7126895,"width":0.019614361,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":13,"bounds":{"left":0.03656915,"top":0.6113328,"width":0.03324468,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":",","depth":13,"bounds":{"left":0.06948138,"top":0.6113328,"width":0.0023271276,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":13,"bounds":{"left":0.03656915,"top":0.6113328,"width":0.049867023,"height":0.027134877},"role_description":"text"},{"role":"AXStaticText","text":",","depth":13,"bounds":{"left":0.050199468,"top":0.6256983,"width":0.0023271276,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":13,"bounds":{"left":0.052526597,"top":0.6256983,"width":0.03357713,"height":0.012769354},"role_description":"text"}]...
|
8936252096944050059
|
-7045437302053104052
|
click
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
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
c-learning-people
confusion-clinic
curiosity_lab
deal-insights-dev
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Nikolay Yankov
Nikolay Nikolov
Aneliya Angelova
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Petko Kashinski
Vasil Vasilev
Galya Dimitrova
Stefka Stoyanova
Stoyan Tomov
Stoyan Tanev
Nikolay Ivanov
Jira Cloud
Toast
Messages
Messages
Channel Overview
Channel Overview
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Nikolay Yankov
Today at 11:21:25 AM
11:21 AM
Днес за AI Chapter-a ще говорим за MCP Server, който ще започнем скоро да правим ние.
Вижте
Confluence страницата
Confluence страницата
, там е описано какво ще правим в общи линии, добра насока е за старт.
Today at 11:22:16 AM
11:22
Репортите са деплойнати
3 reactions, react with raised hands emoji
3
Add reaction…
Nikolay Nikolov
Today at 12:36:39 PM
12:36 PM
https://github.com/jiminny/app/pull/11999
https://github.com/jiminny/app/pull/11999
#11999 Optimize crm sync queue
#11999 Optimize crm sync queue
JIRA:
JY-20723
JY-20723
Deployment notes:
• None
Changes:
• remove job extended visibility of 6 H
Show more
Comments
2
jiminny/app
jiminny/app
|
Today at 12:24 PM
|
Added by
GitHub
GitHub
Nikolay Nikolov
Today at 12:42:39 PM
12:42 PM
махнах и delay-a на webhooks, но, само update са тези които пишат в Редис, има и други които извършват действия - merge, delete ...
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
New
Nikolay Nikolov
Today at 2:39:51 PM
2:39 PM
създадох един таск - грешката е спряла:
https://jiminny.atlassian.net/browse/JY-20728
https://jiminny.atlassian.net/browse/JY-20728
JY-20728 [HubSpot] Find the root cause of 429 hit and tweak API client rate …
JY-20728 [HubSpot] Find the root cause of 429 hit and tweak API client rate …
Status:
Backlog
Type:
Story
Assignee:
Unassigned
Priority:
Medium
Sync thread
Sync thread
sparkles emoji AI Summarise
AI Summarise
More actions...
Added by
Jira Cloud
Jira Cloud
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Ivanov
Today at 2:42:14 PM
2:42 PM
https://github.com/jiminny/app/pull/11981
https://github.com/jiminny/app/pull/11981
, може ли някой да погледне
1 reaction, react with +1 emoji
1
Add reaction…
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Search for: datadog, 1 of 4 suggestions
Channel platform-inner-team
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
MoreSlackcalVIewJiminny... vE Channels# ai-chapter# alerts# backend# c-learning-people# confusion-clinic# curiosity lab# deal-insights-dev# engineering# frontend# general# infra-changes# iiminny-bg8 people-with-copilo….. people-with-zoom-.#t olatform-team# platform-tickets# product launchesit randoml# releases"sona-oince# support# thank-vous# the_people_of_jimi...^ Direct messages.MistonWindowhelp< Describe wnat you are lookins for• plattorm-inner-...Q 10MessagesChannel OverviewMoreinny/app Today at 12:24 PM| Added byNikolay Nikolov 12:42 PMмахнах и delay-a на webhooks, но, самоирааlе са тези които пишат в гедис, има идруги които извършват деиствия - merze.Nikolay Nikolov 2:39 PMсьздадох един таск - грешката е спояла.https://iiminny.atlassian.net/browse/JY-20728JY-20728 [HubSpotl Find the root cause of47 nit and tweak A? client rateType: StoryT Priority: Mediumsync thread*+ Al SummariseNikolay Ivanov 2:42 PM[URL_WITH_CREDENTIALS] LUG PREFIX .I•Fetched activity IDs'. П'automatedReportluid' => Sthis->reportUuid.'activitycount' => count Sactivitvids).if count(Sactivitvids) < self.MIN ACTIVITTES COUNT) <AutomatedRenortResult:REASON NOT_ ENOUGH ACTTVTTTES)•Sloader->infolself::L0G PRESTXNot enouah activities. skinned''automatedReportUuid' => $this->reportUuid,= count (Cactivitvide)thic-sdicnatchMotGenenatodNotjficatjonc/CautomatedReport,sreporcservice,Sunl Generator.snobuisparcher,slogder.return:spavload = SrenortService->qetAskJaminnvGenerateReportPavload0automatedRenort: SautomatedRenortSupport Daily - in 6 m« HS_local [jiminny@localhost]& console [PROD]100% C4Wed 22 Apr 14:54:15& console [EU]= custom.log= laravel.log X4 SF jiminny@localhost]A console [STAGING]PAenaa...
|
NULL
|
|
71031
|
1684
|
5
|
2026-04-22T11:54:15.438656+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776858855438_m1.jpg...
|
Slack
|
platform-inner-team (Channel) - Jiminny Inc - 1 ne platform-inner-team (Channel) - Jiminny Inc - 1 new item - Slack...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
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
c-learning-people
confusion-clinic
curiosity_lab
deal-insights-dev
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Nikolay Yankov
Nikolay Nikolov
Aneliya Angelova
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Petko Kashinski
Vasil Vasilev
Galya Dimitrova
Stefka Stoyanova
Stoyan Tomov
Stoyan Tanev
Nikolay Ivanov
Jira Cloud
Toast
Messages
Messages
Channel Overview
Channel Overview
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Nikolay Yankov
Today at 11:21:25 AM
11:21 AM
Днес за AI Chapter-a ще говорим за MCP Server, който ще започнем скоро да правим ние.
Вижте
Confluence страницата
Confluence страницата
, там е описано какво ще правим в общи линии, добра насока е за старт.
Today at 11:22:16 AM
11:22
Репортите са деплойнати
3 reactions, react with raised hands emoji
3
Add reaction…
Nikolay Nikolov
Today at 12:36:39 PM
12:36 PM
https://github.com/jiminny/app/pull/11999
https://github.com/jiminny/app/pull/11999
#11999 Optimize crm sync queue
#11999 Optimize crm sync queue
JIRA:
JY-20723
JY-20723
Deployment notes:
• None
Changes:
• remove job extended visibility of 6 H
Show more
Comments
2
jiminny/app
jiminny/app
|
Today at 12:24 PM
|
Added by
GitHub
GitHub
Nikolay Nikolov
Today at 12:42:39 PM
12:42 PM
махнах и delay-a на webhooks, но, само update са тези които пишат в Редис, има и други които извършват действия - merge, delete ...
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
New
Nikolay Nikolov
Today at 2:39:51 PM
2:39 PM
създадох един таск - грешката е спряла:
https://jiminny.atlassian.net/browse/JY-20728
https://jiminny.atlassian.net/browse/JY-20728
JY-20728 [HubSpot] Find the root cause of 429 hit and tweak API client rate …
JY-20728 [HubSpot] Find the root cause of 429 hit and tweak API client rate …
Status:
Backlog
Type:
Story
Assignee:
Unassigned
Priority:
Medium
Sync thread
Sync thread
sparkles emoji AI Summarise
AI Summarise
More actions...
Added by
Jira Cloud
Jira Cloud
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Ivanov
Today at 2:42:14 PM
2:42 PM
https://github.com/jiminny/app/pull/11981
https://github.com/jiminny/app/pull/11981
, може ли някой да погледне
1 reaction, react with +1 emoji
1
Add reaction…
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Search for: datadog, 1 of 4 suggestions
Channel platform-inner-team
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"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"},{"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":"c-learning-people","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":"deal-insights-dev","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":"people-with-copilot-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-zoom-phone-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-team","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":24,"role_description":"text"},{"role":"AXStaticText","text":",","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":24,"role_description":"text"},{"role":"AXStaticText","text":",","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Mario Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Gabriela Dureva","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"role_description":"text"},{"role":"AXRadioButton","text":"Channel Overview","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Channel Overview","depth":20,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Yankov","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 11:21:25 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:21 AM","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Днес за AI Chapter-a ще говорим за MCP Server, който ще започнем скоро да правим ние.","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Вижте","depth":26,"role_description":"text"},{"role":"AXLink","text":"Confluence страницата","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Confluence страницата","depth":27,"role_description":"text"},{"role":"AXStaticText","text":", там е описано какво ще правим в общи линии, добра насока е за старт.","depth":26,"role_description":"text"},{"role":"AXLink","text":"Today at 11:22:16 AM","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:22","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Репортите са деплойнати","depth":26,"role_description":"text"},{"role":"AXCheckBox","text":"3 reactions, react with raised hands emoji","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":27,"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Nikolov","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 12:36:39 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:36 PM","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/11999","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/11999","depth":27,"role_description":"text"},{"role":"AXLink","text":"#11999 Optimize crm sync queue","depth":27,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"#11999 Optimize crm sync queue","depth":28,"role_description":"text"},{"role":"AXStaticText","text":"JIRA:","depth":27,"role_description":"text"},{"role":"AXLink","text":"JY-20723","depth":27,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"JY-20723","depth":28,"role_description":"text"},{"role":"AXStaticText","text":"Deployment notes:","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"• None","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Changes:","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"• remove job extended visibility of 6 H","depth":27,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Comments","depth":28,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":28,"role_description":"text"},{"role":"AXLink","text":"jiminny/app","depth":27,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"jiminny/app","depth":28,"role_description":"text"},{"role":"AXStaticText","text":"|","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Today at 12:24 PM","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"|","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Added by","depth":27,"role_description":"text"},{"role":"AXLink","text":"GitHub","depth":27,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"GitHub","depth":28,"role_description":"text"},{"role":"AXButton","text":"Nikolay Nikolov","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 12:42:39 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:42 PM","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"махнах и delay-a на webhooks, но, само update са тези които пишат в Редис, има и други които извършват действия - merge, delete ...","depth":26,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New","depth":23,"role_description":"text"},{"role":"AXButton","text":"Nikolay Nikolov","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 2:39:51 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:39 PM","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"създадох един таск - грешката е спряла:","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/JY-20728","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/JY-20728","depth":27,"role_description":"text"},{"role":"AXLink","text":"JY-20728 [HubSpot] Find the root cause of 429 hit and tweak API client rate …","depth":28,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"JY-20728 [HubSpot] Find the root cause of 429 hit and tweak API client rate …","depth":29,"role_description":"text"},{"role":"AXStaticText","text":"Status:","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Backlog","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Type:","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Story","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Assignee:","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Unassigned","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Priority:","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Medium","depth":27,"role_description":"text"},{"role":"AXButton","text":"Sync thread","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sync thread","depth":29,"role_description":"text"},{"role":"AXButton","text":"sparkles emoji AI Summarise","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"AI Summarise","depth":29,"role_description":"text"},{"role":"AXComboBox","text":"More actions...","depth":28,"placeholder":"More actions...","role_description":"combo box","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Added by","depth":27,"role_description":"text"},{"role":"AXLink","text":"Jira Cloud","depth":27,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jira Cloud","depth":28,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Ivanov","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 2:42:14 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:42 PM","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/11981","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/11981","depth":27,"role_description":"text"},{"role":"AXStaticText","text":", може ли някой да погледне","depth":26,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with +1 emoji","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":27,"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"","depth":24,"value":"","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Search for: datadog, 1 of 4 suggestions","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"Channel platform-inner-team","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":13,"role_description":"text"},{"role":"AXStaticText","text":",","depth":13,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":13,"role_description":"text"},{"role":"AXStaticText","text":",","depth":13,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":13,"role_description":"text"}]...
|
8936252096944050059
|
-7045437302053104052
|
click
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
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
c-learning-people
confusion-clinic
curiosity_lab
deal-insights-dev
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Nikolay Yankov
Nikolay Nikolov
Aneliya Angelova
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Petko Kashinski
Vasil Vasilev
Galya Dimitrova
Stefka Stoyanova
Stoyan Tomov
Stoyan Tanev
Nikolay Ivanov
Jira Cloud
Toast
Messages
Messages
Channel Overview
Channel Overview
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Nikolay Yankov
Today at 11:21:25 AM
11:21 AM
Днес за AI Chapter-a ще говорим за MCP Server, който ще започнем скоро да правим ние.
Вижте
Confluence страницата
Confluence страницата
, там е описано какво ще правим в общи линии, добра насока е за старт.
Today at 11:22:16 AM
11:22
Репортите са деплойнати
3 reactions, react with raised hands emoji
3
Add reaction…
Nikolay Nikolov
Today at 12:36:39 PM
12:36 PM
https://github.com/jiminny/app/pull/11999
https://github.com/jiminny/app/pull/11999
#11999 Optimize crm sync queue
#11999 Optimize crm sync queue
JIRA:
JY-20723
JY-20723
Deployment notes:
• None
Changes:
• remove job extended visibility of 6 H
Show more
Comments
2
jiminny/app
jiminny/app
|
Today at 12:24 PM
|
Added by
GitHub
GitHub
Nikolay Nikolov
Today at 12:42:39 PM
12:42 PM
махнах и delay-a на webhooks, но, само update са тези които пишат в Редис, има и други които извършват действия - merge, delete ...
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
New
Nikolay Nikolov
Today at 2:39:51 PM
2:39 PM
създадох един таск - грешката е спряла:
https://jiminny.atlassian.net/browse/JY-20728
https://jiminny.atlassian.net/browse/JY-20728
JY-20728 [HubSpot] Find the root cause of 429 hit and tweak API client rate …
JY-20728 [HubSpot] Find the root cause of 429 hit and tweak API client rate …
Status:
Backlog
Type:
Story
Assignee:
Unassigned
Priority:
Medium
Sync thread
Sync thread
sparkles emoji AI Summarise
AI Summarise
More actions...
Added by
Jira Cloud
Jira Cloud
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Ivanov
Today at 2:42:14 PM
2:42 PM
https://github.com/jiminny/app/pull/11981
https://github.com/jiminny/app/pull/11981
, може ли някой да погледне
1 reaction, react with +1 emoji
1
Add reaction…
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Search for: datadog, 1 of 4 suggestions
Channel platform-inner-team
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp•DOCKER• ₴1docker882-zshX3* Build full day ac...configcachecompiledeventsroutesviewsworker-analytics:worker-analytics_00: stoppedworker-crm-update:worker-crm-update_00: stoppedjiminny-worker-processing-2:jiminny-worker-processing-2_00:stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00:stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00:stoppedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: stoppedworker-nudges:worker-nudges_00: stoppedworker-download:worker-download_00: stoppedworker-calendar:worker-calendar_00:stoppedworker-emails:worker-emails_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker:worker_00: stoppedworker-audio:worker-audio_00: stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00:startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00: startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00:startedroot@docker_lamp_1:/home/jiminny#php artisan automated-reports --report-id 71lSupport Daily - in 6mA100% <7docker• X4screenpipe"• 885-zsh86APP (-zsh)49.12ms DONE87.46ms DONE10.52ms DONE5.64ms DONE12.56ms DONE20.84ms DONE87Wed 22 Apr 14:54:16181ec2-user@ip-10-..• *8|...
|
NULL
|
|
14849
|
333
|
40
|
2026-04-14T14:10:32.432014+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776175832432_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow Helpjiminny.atlassian.net/jira/software/c/projects/JY/boards/37?selectedlssue=JY-19240O) JIMINNYQ Searchg For you• Recent# Starred0f AppsD, SpacesSpaces / Jiminny (New)Platform Team& JY-19240® Summary& TimelineE BacklogAJ Reports0 Search board.080088RecentREADY FOR DEVJiminny (New)IID Platform Teamuu se KanbanIID Capture TearM Enterprise Stability I...WD Processing Team(Y Service-Desk- More spacesE FiltersC DashboardsC Operations2 Confluence•a leams2= Customise sidebar05DescriptionObjectivecalis ane ceais).Give customers the ability to automate the AJ questions they want to ask on larger volumes of data (multiple_ Target userManager/Leader - they want to be able to get an overview of their team's performanceRev Ops leaders - Understand the main reasons why deals have been lost/won and figure out what needs tochange to improve their conversion rate@ Pain point or problemCurrently customers need to manually go in, select their filters and ask their prompt. Instead we want toautomate this for them so they get updates on regular basis.Answers on larger number of calls that people want to get:• What were the top objections raised in calls last month?• Sales Manager wants to look at calls across one sales rep and look at their performance over time using aprompt around Objection Handling skills. How have they progressed over the past month and which areasshould they focus on for the next month?• Sales Leader has launched SPIN as a new sales framework and wants to measure who's doing this thebest• What are customers saying about feature X?Answers on larger number of deal that people want to get:• Why did we lose deals over $50K last quarter?• Which competitor came up most in closed lost deals?• What sales rep behaviours are helping us win more deals and we should ensure that everyone adopts?_ [URL_WITH_CREDENTIALS] Progress vDetailsAssigneeReporterDevelopmentComponentsSub-ProductLabelsStory pointestimateStoryPointsOrganisationsPriorityFix versionsSprintTawestmentDaysNeed QAEpic NameCanny Links+ Create1* Improve Epic& UnassignedAssign to meGalya Dimitrova@ Open with VS Code?3 Create branché Create commit(Platform)Add optionsNoneNoneNoneNone= MediumNoneNoneGrowthNoneAdd optionAJ ReportsOpen Canny Links> More fields Original estimate, Time tracking> Automation 4 Rule executions> featureOs ≤ Open featureOs40 lil • f Retro - Platform • 1h 5m leftA100% CS8 • Tue 14 Apr 17:10:32Ask Rovo# Archived work itemsE Pages ShortcutsvMore 2Complete sprintGroup: QueriesCEPTANCEDEPLOY 8Fix downtime during to feature flagreledst(SUPPORT TICKETSDeployed* JY-205651.5AI Review - Q1GROWTH - MAINTAIN OUR COMPETITIVE PO...Deployed# JY-199820 0000 = 2ino suen column Iype on enuly'Event'PLATFORM STABILITYDeployed© JY-203840.5. 0000=Missed deletion of stale deals risksREDUCE CHURNClosed** JY-20619130 •000=[Pipedrive] DI > status not labeled,date data missingREDUCE CHURNDeployed[ JY-206140.5 %2 0000 = 0OD/TI > Refresh the results whenthe field is cleared with the 'x'FE IMPROVEMENTSDeployedN JY-203710.5 0000=Fix [HubSpot] Updating associationsREDUCE CHURNClosed+K JY-206212 % .000=0[HubSpot] Skip engagement updateWnen Z acuivues win samecalendar (sinale) event...
|
NULL
|
8936009229066498412
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow Helpjiminny.atlassian.net/jira/software/c/projects/JY/boards/37?selectedlssue=JY-19240O) JIMINNYQ Searchg For you• Recent# Starred0f AppsD, SpacesSpaces / Jiminny (New)Platform Team& JY-19240® Summary& TimelineE BacklogAJ Reports0 Search board.080088RecentREADY FOR DEVJiminny (New)IID Platform Teamuu se KanbanIID Capture TearM Enterprise Stability I...WD Processing Team(Y Service-Desk- More spacesE FiltersC DashboardsC Operations2 Confluence•a leams2= Customise sidebar05DescriptionObjectivecalis ane ceais).Give customers the ability to automate the AJ questions they want to ask on larger volumes of data (multiple_ Target userManager/Leader - they want to be able to get an overview of their team's performanceRev Ops leaders - Understand the main reasons why deals have been lost/won and figure out what needs tochange to improve their conversion rate@ Pain point or problemCurrently customers need to manually go in, select their filters and ask their prompt. Instead we want toautomate this for them so they get updates on regular basis.Answers on larger number of calls that people want to get:• What were the top objections raised in calls last month?• Sales Manager wants to look at calls across one sales rep and look at their performance over time using aprompt around Objection Handling skills. How have they progressed over the past month and which areasshould they focus on for the next month?• Sales Leader has launched SPIN as a new sales framework and wants to measure who's doing this thebest• What are customers saying about feature X?Answers on larger number of deal that people want to get:• Why did we lose deals over $50K last quarter?• Which competitor came up most in closed lost deals?• What sales rep behaviours are helping us win more deals and we should ensure that everyone adopts?_ [URL_WITH_CREDENTIALS] Progress vDetailsAssigneeReporterDevelopmentComponentsSub-ProductLabelsStory pointestimateStoryPointsOrganisationsPriorityFix versionsSprintTawestmentDaysNeed QAEpic NameCanny Links+ Create1* Improve Epic& UnassignedAssign to meGalya Dimitrova@ Open with VS Code?3 Create branché Create commit(Platform)Add optionsNoneNoneNoneNone= MediumNoneNoneGrowthNoneAdd optionAJ ReportsOpen Canny Links> More fields Original estimate, Time tracking> Automation 4 Rule executions> featureOs ≤ Open featureOs40 lil • f Retro - Platform • 1h 5m leftA100% CS8 • Tue 14 Apr 17:10:32Ask Rovo# Archived work itemsE Pages ShortcutsvMore 2Complete sprintGroup: QueriesCEPTANCEDEPLOY 8Fix downtime during to feature flagreledst(SUPPORT TICKETSDeployed* JY-205651.5AI Review - Q1GROWTH - MAINTAIN OUR COMPETITIVE PO...Deployed# JY-199820 0000 = 2ino suen column Iype on enuly'Event'PLATFORM STABILITYDeployed© JY-203840.5. 0000=Missed deletion of stale deals risksREDUCE CHURNClosed** JY-20619130 •000=[Pipedrive] DI > status not labeled,date data missingREDUCE CHURNDeployed[ JY-206140.5 %2 0000 = 0OD/TI > Refresh the results whenthe field is cleared with the 'x'FE IMPROVEMENTSDeployedN JY-203710.5 0000=Fix [HubSpot] Updating associationsREDUCE CHURNClosed+K JY-206212 % .000=0[HubSpot] Skip engagement updateWnen Z acuivues win samecalendar (sinale) event...
|
NULL
|
|
19263
|
409
|
22
|
2026-04-15T07:29:29.234055+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776238169234_m1.jpg...
|
Firefox
|
Meet - [Platform] Planning I Session 📅 — Work
|
True
|
meet.google.com/tgb-pyuf-dri?authuser=lukas.kovali meet.google.com/tgb-pyuf-dri?authuser=lukas.kovalik%40jiminny.com...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - [Platform] Planning I Session 📅
Close tab
N Meet - [Platform] Planning I Session 📅
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Stefka Stoyanova (Presenting, annotating)
Stefka Stoyanova (Presenting, annotating)
People
9
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Unpin Stefka Stoyanova's presentation from your main screen
You can't unmute someone else's presentation
More options for Stefka Stoyanova
Zoom in
Open in new window
Enter Full Screen
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Galya Dimitrova to your main screen
Mute Galya Dimitrova's microphone
More options for Galya Dimitrova
Galya Dimitrova
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Stefka Stoyanova to your main screen
Mute Stefka Stoyanova's microphone
More options for Stefka Stoyanova
Stefka Stoyanova
4 others
4 others
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
10:29
AM
[Platform] Planning I Session 📅
[Platform] Planning I Session 📅
Audio settings
Turn on microphone
Video settings
Turn off camera
Stefka Stoyanova is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Your camera is on.
Background is now replaced...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - [Platform] Planning I Session 📅","depth":4,"bounds":{"left":0.0,"top":0.072222225,"width":0.033680554,"height":0.045555554},"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.0013888889,"top":0.072222225,"width":0.010416667,"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.005902778,"top":0.12,"width":0.022222223,"height":0.035555556},"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.0,"top":0.7977778,"width":0.033680554,"height":0.043333333},"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.0,"top":0.8411111,"width":0.033680554,"height":0.038333334},"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.0,"top":0.8794444,"width":0.033680554,"height":0.03888889},"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.0,"top":0.91833335,"width":0.033680554,"height":0.038333334},"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.0,"top":0.95666665,"width":0.033680554,"height":0.043333333},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Stefka Stoyanova (Presenting, annotating)","depth":12,"bounds":{"left":0.07534722,"top":0.101111114,"width":0.18888889,"height":0.022222223},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Stefka Stoyanova (Presenting, annotating)","depth":13,"bounds":{"left":0.07534722,"top":0.10222222,"width":0.18888889,"height":0.020555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":15,"bounds":{"left":0.88680553,"top":0.08944444,"width":0.04097222,"height":0.04},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"9","depth":22,"bounds":{"left":0.9145833,"top":0.101111114,"width":0.0048611113,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":14,"bounds":{"left":0.93333334,"top":0.08944444,"width":0.025,"height":0.04},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":17,"bounds":{"left":0.9361111,"top":0.101111114,"width":0.06388891,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":22,"bounds":{"left":0.96666664,"top":0.101111114,"width":0.028125,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":22,"bounds":{"left":0.96458334,"top":0.090555556,"width":0.023611112,"height":0.037777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.57916665,"top":0.62333333,"width":0.14652778,"height":0.08888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.72326386,"top":0.6377778,"width":0.08090278,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.70104164,"top":0.6338889,"width":0.11076389,"height":0.05666667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Unpin Stefka Stoyanova's presentation from your main screen","depth":13,"bounds":{"left":0.34618056,"top":0.5088889,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else's presentation","depth":13,"bounds":{"left":0.37395832,"top":0.50666666,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Stefka Stoyanova","depth":13,"bounds":{"left":0.4045139,"top":0.5088889,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Zoom in","depth":13,"bounds":{"left":0.63090277,"top":0.81777775,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":13,"bounds":{"left":0.6642361,"top":0.81777775,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":13,"bounds":{"left":0.69756943,"top":0.81777775,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.7986111,"top":0.27722222,"width":0.14652778,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.9427083,"top":0.29222223,"width":0.057291687,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.9204861,"top":0.28777778,"width":0.07951391,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Galya Dimitrova to your main screen","depth":13,"bounds":{"left":0.7607639,"top":0.25111112,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Galya Dimitrova's microphone","depth":13,"bounds":{"left":0.7885417,"top":0.2488889,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Galya Dimitrova","depth":13,"bounds":{"left":0.8190972,"top":0.25111112,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Galya Dimitrova","depth":17,"bounds":{"left":0.753125,"top":0.36277777,"width":0.08229167,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.91180557,"top":0.27611113,"width":0.08819443,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":1.0,"top":0.2911111,"width":-0.05590272,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":1.0,"top":0.28666666,"width":-0.03368056,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Nikolov to your main screen","depth":13,"bounds":{"left":0.8871528,"top":0.25111112,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Nikolov's microphone","depth":13,"bounds":{"left":0.9149306,"top":0.2488889,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Nikolov","depth":13,"bounds":{"left":0.9454861,"top":0.25111112,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":17,"bounds":{"left":0.87951386,"top":0.36277777,"width":0.078819446,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.80138886,"top":0.5338889,"width":0.14652778,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.9454861,"top":0.54888886,"width":0.05451387,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.9232639,"top":0.54444444,"width":0.07673609,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Stefka Stoyanova to your main screen","depth":13,"bounds":{"left":0.7607639,"top":0.5088889,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Stefka Stoyanova's microphone","depth":13,"bounds":{"left":0.7885417,"top":0.50666666,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Stefka Stoyanova","depth":13,"bounds":{"left":0.8190972,"top":0.5088889,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":17,"bounds":{"left":0.753125,"top":0.6205556,"width":0.088541664,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"4 others","depth":11,"bounds":{"left":0.87118053,"top":0.40888888,"width":0.11805555,"height":0.24444444},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4 others","depth":13,"bounds":{"left":0.90868056,"top":0.55722225,"width":0.043055557,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.73888886,"top":0.7916667,"width":0.14652778,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.665625,"top":0.8066667,"width":0.07569444,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.64618057,"top":0.80222225,"width":0.11736111,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"You’re continuously framed","depth":13,"bounds":{"left":0.82256943,"top":0.7644445,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Backgrounds and effects","depth":13,"bounds":{"left":0.853125,"top":0.7644445,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Lukas Kovalik","depth":13,"bounds":{"left":0.8836806,"top":0.76666665,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":17,"bounds":{"left":0.753125,"top":0.87833333,"width":0.06909722,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":14,"bounds":{"left":0.96631944,"top":0.875,"width":0.018055556,"height":0.028888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"10:29","depth":12,"bounds":{"left":0.050347224,"top":0.9444444,"width":0.027430555,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":12,"bounds":{"left":0.08125,"top":0.9444444,"width":0.017708333,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"[Platform] Planning I Session 📅","depth":12,"bounds":{"left":0.11631945,"top":0.9111111,"width":0.16215278,"height":0.08888888},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[Platform] Planning I Session 📅","depth":15,"bounds":{"left":0.11631945,"top":0.9438889,"width":0.16215278,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":13,"bounds":{"left":0.32118055,"top":0.9288889,"width":0.06111111,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on microphone","depth":13,"bounds":{"left":0.34895834,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":13,"bounds":{"left":0.38784721,"top":0.9288889,"width":0.06111111,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":13,"bounds":{"left":0.415625,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Stefka Stoyanova is presenting","depth":12,"bounds":{"left":0.45451388,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":12,"bounds":{"left":0.49895832,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":13,"bounds":{"left":0.5434028,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":12,"bounds":{"left":0.58784723,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":12,"bounds":{"left":0.6322917,"top":0.9288889,"width":0.025,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":12,"bounds":{"left":0.6628472,"top":0.9288889,"width":0.05,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":12,"bounds":{"left":0.89166665,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":12,"bounds":{"left":0.925,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":12,"bounds":{"left":0.9583333,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Your camera 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"}]...
|
8935616539857048456
|
-6416532991291163844
|
visual_change
|
accessibility
|
NULL
|
Meet - [Platform] Planning I Session 📅
Close tab
N Meet - [Platform] Planning I Session 📅
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Stefka Stoyanova (Presenting, annotating)
Stefka Stoyanova (Presenting, annotating)
People
9
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Unpin Stefka Stoyanova's presentation from your main screen
You can't unmute someone else's presentation
More options for Stefka Stoyanova
Zoom in
Open in new window
Enter Full Screen
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Galya Dimitrova to your main screen
Mute Galya Dimitrova's microphone
More options for Galya Dimitrova
Galya Dimitrova
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Stefka Stoyanova to your main screen
Mute Stefka Stoyanova's microphone
More options for Stefka Stoyanova
Stefka Stoyanova
4 others
4 others
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
10:29
AM
[Platform] Planning I Session 📅
[Platform] Planning I Session 📅
Audio settings
Turn on microphone
Video settings
Turn off camera
Stefka Stoyanova is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Your camera is on.
Background is now replaced...
|
NULL
|
|
23403
|
505
|
60
|
2026-04-15T11:22:11.633669+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776252131633_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
72017351058141ao/al.Imperial Age8Game Paused (P)Cl 72017351058141ao/al.Imperial Age8Game Paused (P)Click where you want to build the building.8 Ashikaga Takauji: 17010/170107 Basil the Macedonian: 15529/155292 Anccu Hualloc: 13134/131341 kovaliklukas: 11418/114183 Bird Jaguar: 7254/72544 Siddhraj Jaisingh: 4542/45425 Hоnerius: 4037/4037 (7)6 Mindaugas: 2664/2664IV...
|
NULL
|
8935615093945148031
|
NULL
|
visual_change
|
ocr
|
NULL
|
72017351058141ao/al.Imperial Age8Game Paused (P)Cl 72017351058141ao/al.Imperial Age8Game Paused (P)Click where you want to build the building.8 Ashikaga Takauji: 17010/170107 Basil the Macedonian: 15529/155292 Anccu Hualloc: 13134/131341 kovaliklukas: 11418/114183 Bird Jaguar: 7254/72544 Siddhraj Jaisingh: 4542/45425 Hоnerius: 4037/4037 (7)6 Mindaugas: 2664/2664IV...
|
23401
|
|
30202
|
613
|
33
|
2026-04-15T14:58:53.088082+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776265133088_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditEDHome1DMsActivityFilesLater..•More+ +SlackFileEditEDHome1DMsActivityFilesLater..•More+ViewGo→Jiminny ...+CHISHICCIITIS# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of _jimi...Direct messagesVasil VasilevAneliya Angelova, ...Stoyan TanevVesGalya DimitrovaR. Steliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaR. Nikolay Nikolovii: AppsJira CloudToastHistoryWindowHelpSearch Jiminny Inc# releases8 226 0MessagesO Files• Bookmarks19-620201T 3 new messages+Tag:View JobGitHub APP 5:54 PM10 new commits pushed to master by yalokin-jiminny630fd8f9 - SRD-6779 |JY-20632 | Unableto log in to Sidekick with SSO0f38589b - SRD-6779 |JY-20632 | Add log4dd5718e - SRD-6779 |JY-20632 | minorimprovementb1e544db - SRD-6779 |JY-20632 | addtests8bd0ef70 - SRD-6779 |JY-20632 | addtestsShow more( jiminny/app Added by GitHubCircleCl APP5:56 PMDeployment Successful!Project:extension-appTag:When:04/15/202614:56:29View JobMessage #releases+Aa...Activity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefox GPU HelperVTDecoderXPCServiceSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)Claude Helper (Renderer)claudeNotion Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentscreenpipeMEMORY PRESSURERMem...2,01 GB1,20 GB1,00 GB963,1 MB843,8 MB812,7 MB794,4 MB597,3 MB544,2 MB543,9 MB515,9 MB501,8 MB499,9 MB422,5 MB421,7 MB397,5 MB394,2 MB389,5 MB372,6 MB346,3 MB326,3 MB326,3 MB323,2 MB298,6 MB272,0 MB258,5 MB245,6 MB232,1 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 17:58:52CPUMemoryDiskThreads4323742685282429271118242624262427231616132127272661EnergyPorts61219 8057261261 20213020 043126241253166203121125124127122126121173222723281241271 835123518PID93892407801442974146644203084236713801914673938994186335480358313527643016368984365248173265486051950910114835833482984878561384287616,00 GB14,23 GB <1,73 GB3,11 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,92 GB2,87 GB6,90 GB...
|
NULL
|
8935493430959696179
|
NULL
|
click
|
ocr
|
NULL
|
+SlackFileEditEDHome1DMsActivityFilesLater..•More+ +SlackFileEditEDHome1DMsActivityFilesLater..•More+ViewGo→Jiminny ...+CHISHICCIITIS# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of _jimi...Direct messagesVasil VasilevAneliya Angelova, ...Stoyan TanevVesGalya DimitrovaR. Steliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaR. Nikolay Nikolovii: AppsJira CloudToastHistoryWindowHelpSearch Jiminny Inc# releases8 226 0MessagesO Files• Bookmarks19-620201T 3 new messages+Tag:View JobGitHub APP 5:54 PM10 new commits pushed to master by yalokin-jiminny630fd8f9 - SRD-6779 |JY-20632 | Unableto log in to Sidekick with SSO0f38589b - SRD-6779 |JY-20632 | Add log4dd5718e - SRD-6779 |JY-20632 | minorimprovementb1e544db - SRD-6779 |JY-20632 | addtests8bd0ef70 - SRD-6779 |JY-20632 | addtestsShow more( jiminny/app Added by GitHubCircleCl APP5:56 PMDeployment Successful!Project:extension-appTag:When:04/15/202614:56:29View JobMessage #releases+Aa...Activity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefox GPU HelperVTDecoderXPCServiceSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)Claude Helper (Renderer)claudeNotion Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentscreenpipeMEMORY PRESSURERMem...2,01 GB1,20 GB1,00 GB963,1 MB843,8 MB812,7 MB794,4 MB597,3 MB544,2 MB543,9 MB515,9 MB501,8 MB499,9 MB422,5 MB421,7 MB397,5 MB394,2 MB389,5 MB372,6 MB346,3 MB326,3 MB326,3 MB323,2 MB298,6 MB272,0 MB258,5 MB245,6 MB232,1 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 17:58:52CPUMemoryDiskThreads4323742685282429271118242624262427231616132127272661EnergyPorts61219 8057261261 20213020 043126241253166203121125124127122126121173222723281241271 835123518PID93892407801442974146644203084236713801914673938994186335480358313527643016368984365248173265486051950910114835833482984878561384287616,00 GB14,23 GB <1,73 GB3,11 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,92 GB2,87 GB6,90 GB...
|
NULL
|
|
26471
|
560
|
58
|
2026-04-15T13:23:26.691160+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776259406691_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditViewGoEDHomeActivity..•More+HistoryW +SlackFileEditViewGoEDHomeActivity..•More+HistoryWindowHelp→Search Jiminny IncJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesStoyan TanevVesGalya DimitrovaAneliya Angelova, ...Vasil VasilevSteliyan GeorgievAdelina Petrova, Ili...P. Adelina Petrova0. Nikolay Nikolov2 Galya Dimitrova, Ni...ii: AppsToastJira CloudGoogle Cale...# releases8 22Messagesnewdou+@ Files• Bookmarksv 2 new messagesGitHub APP3:28 PM7 new commits pushed tomaster by nikolay-yankovNew24b989ee - Enhance SECFIXdocumentation and policiesa3a0a742 - Update SECFIX Slack channelreference in documentation and workflowfiles071c999d - Merge branch 'master' intoimprove-secfix-bot-15-04-2026981e9a1a - Update SECFIX_PROMPT.mdto enhance clarity on upgrade safety andchangelog reviews6e938e53 - Enhance SECFIX workflow withSlack notification optionsShow more( jiminny/app Added by GitHubCircleCl APP3:53 PMDeployment Successful!Project: appWhen:04/15/202612:53:30Tag:View JobMessage #releases+Aa• Sprint Review • 7 m leftRActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefoxCP Isolated Web ContentFirefox GPU HelperVTDecoderXPCServiceSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentClaude Helper (Renderer)Notion Calendar Helper (Renderer)claudeNotion Helper (Renderer)FirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentMem...2,03 GB1,18 GB975,7 MB962,6 MB846,6 MB793,6 MB755,7 MB554,1 MB547,2 MB543,9 MB516,1 MB463,8 MB462,8 MB440,5 MB420,3 MB389,6 MB388,2 MB387,8 MB372,5 MB350,0 MB343,3 MB326,2 MB325,9 MB303,5 MB251,9 MB239,4 MB235,5 MB216,0 MBMEMORY PRESSUREPhysical Memory:Memory Used:Cached Files:Swap Used:100% C78Wed 15 Apr 16:23:26CPUMemoryDiskThreads39227326842830252712152524262524272315151320277262724EnergyPorts61019 7527251261 20220 023129244128254169185123124125125121126121220172723131241 836122126122PID93892407801442974146648424203080193671314673938994186335480352763583143016368984365248173605192654850910114835833487856138482987429516,00 GB14,14 GB1,80 GB2,93 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,87 GB2,88 GB6,84 GB...
|
NULL
|
8935389325650330582
|
NULL
|
click
|
ocr
|
NULL
|
+SlackFileEditViewGoEDHomeActivity..•More+HistoryW +SlackFileEditViewGoEDHomeActivity..•More+HistoryWindowHelp→Search Jiminny IncJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesStoyan TanevVesGalya DimitrovaAneliya Angelova, ...Vasil VasilevSteliyan GeorgievAdelina Petrova, Ili...P. Adelina Petrova0. Nikolay Nikolov2 Galya Dimitrova, Ni...ii: AppsToastJira CloudGoogle Cale...# releases8 22Messagesnewdou+@ Files• Bookmarksv 2 new messagesGitHub APP3:28 PM7 new commits pushed tomaster by nikolay-yankovNew24b989ee - Enhance SECFIXdocumentation and policiesa3a0a742 - Update SECFIX Slack channelreference in documentation and workflowfiles071c999d - Merge branch 'master' intoimprove-secfix-bot-15-04-2026981e9a1a - Update SECFIX_PROMPT.mdto enhance clarity on upgrade safety andchangelog reviews6e938e53 - Enhance SECFIX workflow withSlack notification optionsShow more( jiminny/app Added by GitHubCircleCl APP3:53 PMDeployment Successful!Project: appWhen:04/15/202612:53:30Tag:View JobMessage #releases+Aa• Sprint Review • 7 m leftRActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefoxCP Isolated Web ContentFirefox GPU HelperVTDecoderXPCServiceSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentClaude Helper (Renderer)Notion Calendar Helper (Renderer)claudeNotion Helper (Renderer)FirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentMem...2,03 GB1,18 GB975,7 MB962,6 MB846,6 MB793,6 MB755,7 MB554,1 MB547,2 MB543,9 MB516,1 MB463,8 MB462,8 MB440,5 MB420,3 MB389,6 MB388,2 MB387,8 MB372,5 MB350,0 MB343,3 MB326,2 MB325,9 MB303,5 MB251,9 MB239,4 MB235,5 MB216,0 MBMEMORY PRESSUREPhysical Memory:Memory Used:Cached Files:Swap Used:100% C78Wed 15 Apr 16:23:26CPUMemoryDiskThreads39227326842830252712152524262524272315151320277262724EnergyPorts61019 7527251261 20220 023129244128254169185123124125125121126121220172723131241 836122126122PID93892407801442974146648424203080193671314673938994186335480352763583143016368984365248173605192654850910114835833487856138482987429516,00 GB14,14 GB1,80 GB2,93 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,87 GB2,88 GB6,84 GB...
|
26469
|
|
29014
|
596
|
14
|
2026-04-15T14:28:38.911500+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776263318911_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
93851102015672035183/185toVImperial AgePlayer 2 Ra 93851102015672035183/185toVImperial AgePlayer 2 Rajyapala!8!---Elite Longbowman Created-o Magnus uiaisson: il tnou aost unisthing, I shall join thy side.Game Paused (P)Click to select this buildingMonkkovalfklukas (Britons))7 0/0SUSU5 Magnus Olafsson: 36686/366861 kovaliklukas: 34289/342898 Almish Yiltawar: 26898/26898Rajyapala: 20525/235256 LAczl6 I: 12341/12344€E Maximilian of Habsbung: 6531/6531 H IV4 Louis VI: 6104/6104 C IV3 Huagcán: 5966/5966 # IV...
|
NULL
|
8934834078439063291
|
NULL
|
visual_change
|
ocr
|
NULL
|
93851102015672035183/185toVImperial AgePlayer 2 Ra 93851102015672035183/185toVImperial AgePlayer 2 Rajyapala!8!---Elite Longbowman Created-o Magnus uiaisson: il tnou aost unisthing, I shall join thy side.Game Paused (P)Click to select this buildingMonkkovalfklukas (Britons))7 0/0SUSU5 Magnus Olafsson: 36686/366861 kovaliklukas: 34289/342898 Almish Yiltawar: 26898/26898Rajyapala: 20525/235256 LAczl6 I: 12341/12344€E Maximilian of Habsbung: 6531/6531 H IV4 Louis VI: 6104/6104 C IV3 Huagcán: 5966/5966 # IV...
|
29013
|
|
66457
|
1494
|
47
|
2026-04-21T14:43:19.489202+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776782599489_m2.jpg...
|
Firefox
|
Jiminny — Work
|
True
|
app.staging.jiminny.com/ai-reports
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Project Phoenix – Figma
Project Phoenix – Figma
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - jiminny/app
Pipelines - jiminny/app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Search results: calendar | Jiminny Help Center
Search results: calendar | Jiminny Help Center
Jiminny
Jiminny
Jiminny
Jiminny
Close tab
Edit - Calendar - Engineering - Confluence
Edit - Calendar - Engineering - Confluence
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 874522
75
75
AI Reports
AI Reports
Ask Jiminny reports
Ask Jiminny reports
Report name
Period
Exec Summary × Loss Analysis × Product Feedback × Coaching Profiles × Report Type
Exec Summary
×
Loss Analysis
×
Product Feedback
×
Coaching Profiles
×
Report Type
Clear all
NAME
FREQUENCY
SHARED
DATE
ACTIONS
No reports have been created yet
Open Intercom Messenger
Search HTML
Create New Node
Grab a color from the page (Cmd+Shift+Y)
<!DOCTYPE html>
<
html
lang="en"
lang
="
en
"
style="--asset-image-logo-short-100: "data:image/svg+xml;base64,PHN…F3akpRQUFBQUJKUlU1RXJrSmdnZz09Ii8+CjwvZGVmcz4KPC9zdmc+Cg==";"
style
="
--asset-image-logo-short-100: "data:image/svg+xml;base64,PHN…F3akpRQUFBQUJKUlU1RXJrSmdnZz09Ii8+CjwvZGVmcz4KPC9zdmc+Cg==";
"
New attribute
>
event
<
head
New attribute
>
</
head
>
event
<
body
class="fixed-header Frontend pace-done pace-done"
class
="
fixed-header Frontend pace-done pace-done
"
New attribute
>
event
<
div
class="pace pace-inactive pace-inactive"
class
="
pace pace-inactive pace-inactive
"
New attribute
>
</
div
>
event
<
div
id="app"
id
="
app
"
data-v-app
New attribute
>
</
div
>
event
<
div
id="userpilotContent"
id
="
userpilotContent
"
key="113254367"
key
="
113254367
"
theme_id="0"
theme_id
="
0
"
New attribute
>
</
div
>
event
<
iframe
id="intercom-frame"
id
="
intercom-frame
"
style="position: absolute !important; opacity: 0 !important; width:…ck !important; z-index: -1 !important; pointer-events: none;"
style
="
position: absolute !important; opacity: 0 !important; width:…ck !important; z-index: -1 !important; pointer-events: none;
"
aria-hidden="true"
aria-hidden
="
true
"
tabindex="-1"
tabindex
="
-1
"
title="Intercom"
title
="
Intercom
"
New attribute
>
</
iframe
>
<
div
class="intercom-lightweight-app"
class
="
intercom-lightweight-app
"
New attribute
>
</
div
>
</
body
>
</
html
>
Filter Styles
:hov
.cls
Add new rule
Toggle light color scheme simulation for the page
Toggle dark color scheme simulation for the page
Toggle print media simulation for the page
element
Highlight all elements matching this selector
{
}
vue-mq-bh4L87Tr.css:2
vue-mq-bh4L87Tr.css:2
.btn, body
.btn
,
body
Highlight all elements matching this selector
{
Enable -webkit-text-size-adjust property
-webkit-text-size-adjust
:
100%
;
Enable -ms-text-size-adjust property
-ms-text-size-adjust
:
100%
;
Enable -webkit-font-feature-settings property
-webkit-font-feature-settings
:
Click to display individual properties
"kern" 1
"kern"
1
;
Filter rules containing this property
Enable -moz-font-feature-settings property
-moz-font-feature-settings
:
Click to display individual properties
"kern" 1
"kern"
1
;
}
vue-mq-bh4L87Tr.css:2
vue-mq-bh4L87Tr.css:2
.btn, body, h1, h2, h3, h4, h5, h6
.btn
,
body
,
h1
,
h2
,
h3
,
h4
,
h5
,
h6
Highlight all elements matching this selector
{
Enable -webkit-font-smoothing property
-webkit-font-smoothing
:
Click to display individual properties
antialiased
;
}
vue-mq-bh4L87Tr.css:2
vue-mq-bh4L87Tr.css:2
body, p
body
,
p
Highlight all elements matching this selector
{
Enable letter-spacing property
letter-spacing
:
.01em
;
}
vue-mq-bh4L87Tr.css:2
vue-mq-bh4L87Tr.css:2
body
body
Highlight all elements matching this selector
{
Enable color property
color
:
Click to open the color picker, Shift+click to change the color format var(--color-text-primary Jump to variable definition )
Click to open the color picker, Shift+click to change the color format
var(
--color-text-primary
Jump to variable definition
)
;
Enable background property
background
:
Click to open the color picker, Shift+click to change the color format var(--color-background Jump to variable definition )
Click to open the color picker, Shift+click to change the color format
var(
--color-background
Jump to variable definition
)
;
Enable margin property
margin
:
Click to display individual properties
0
;
Enable padding property
padding
:
Click to display individual properties
0
;
Enable font-family property
font-family
:
Lato,sans-serif
Lato
,
sans-serif
;
Enable font-size property
font-size
:
14px
;
Enable font-weight property
font-weight
:
400
;
}
vue-mq-bh4L87Tr.css:2
vue-mq-bh4L87Tr.css:2
body
body
Highlight all elements matching this selector
{
Enable margin property
margin
:
Click to display individual properties
0
;
Filter rules containing this property
}
vue-mq-bh4L87Tr.css:2
vue-mq-bh4L87Tr.css:2
*, ::after, ::before, input[type="search"]
*
,
::after
,
::before
,
input
[type="search"]
Highlight all elements matching this selector
{
Enable box-sizing property
box-sizing
:
border-box
;
}
Inherited from html
Inherited from html
element
Highlight all elements matching this selector
{
Enable --asset-image-logo-short-100 property
--asset-image-logo-short-100
:
"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgNjQgNjQiIHdpZHRoPSI2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS02LjQgMTguNGMtMS42IDEuNi0yLjIgMy42LTEuOCA1LjcuNiAyLjYgMi43IDQuNSA1LjUgNC43IDMuMy4zIDcuOS0xLjYgMTAuMS02LjVsLTMuOC0xLjdjLTEuMyAyLjktMy45IDQuMi01LjggNC0xLjUtLjEtMS43LTEuMS0xLjgtMS41LS4xLS41LS4xLTEuMS43LTEuOSAyLTIgNy41LTMuMiAxNC41LTIuMi0xLjQ1NDU0NTUgMy4xODE4MTgyLTIuNjYxMTU3IDYuMzYzNjM2NC0zLjc3MDA5NzcgOS4zMjAwNjAxbC0uMzI5OTAyMy44Nzk5Mzk5Yy0uMS4yLS4xLjMtLjIuNS0uMDc1LjIyNS0uMTUuMzkzNzUtLjIyNS41OTA2MjVsLS4wNzUuMjA5Mzc1Yy0uNCAxLjEyLS44IDIuMjQtMS4yIDMuMzA4OGwtLjMuNzkxMmMtLjIuNi0uNSAxLjItLjcgMS43LS4wNzUuMjI1LS4xNS4zOTM3NS0uMjI1LjU5MDYyNWwtLjA3NS4yMDkzNzVjLS4zMi43Mi0uNTc2IDEuMzc2LS44NzA0IDIuMDE5MmwtLjIyOTYuNDgwOGMtMi40IDUuNi04IDguMi0xMi4xIDcuOC0xLjQtLjEtNC0uOC00LjYtMy42LS4zLTEuNSAwLTIuOSAxLjEtNC4yIDItMi4zIDYuNy00LjUgMTQuNC00LjkuNS0xLjQgMS4xLTIuOCAxLjYtNC4yLTguOC4xLTE1LjcgMi40LTE5LjIgNi40LTIgMi4zLTIuNyA1LTIuMSA3LjguOCAzLjkgMy45IDYuNSA4LjMgNi45LjQgMCAuOC4xIDEuMi4xIDUuMyAwIDExLjY1OTYzNjUtMy4xNzg5MDk1IDE0LjgyNDMwODQtOS43MjU4MjE4bC4xNzU2OTE2LS4zNzQxNzgyYzEuMi0yLjYgMi40LTUuOCAzLjctOS4zIDEuNi00LjMgMy40LTkuMiA1LjctMTMuOWwxLjItMi40LTIuNi0uNmMtOS4xLTEuOC0xNy4zLS43LTIxIDN6IiBmaWxsPSIjZmZmIi8+PC9zdmc+"
;
Enable --logo-icon-mask property
--logo-icon-mask
:
url( data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgNjQgNjQiIHdpZHRoPSI2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS02LjQgMTguNGMtMS42IDEuNi0yLjIgMy42LTEuOCA1LjcuNiAyLjYgMi43IDQuNSA1LjUgNC43IDMuMy4zIDcuOS0xLjYgMTAuMS02LjVsLTMuOC0xLjdjLTEuMyAyLjktMy45IDQuMi01LjggNC0xLjUtLjEtMS43LTEuMS0xLjgtMS41LS4xLS41LS4xLTEuMS43LTEuOSAyLTIgNy41LTMuMiAxNC41LTIuMi0xLjQ1NDU0NTUgMy4xODE4MTgyLTIuNjYxMTU3IDYuMzYzNjM2NC0zLjc3MDA5NzcgOS4zMjAwNjAxbC0uMzI5OTAyMy44Nzk5Mzk5Yy0uMS4yLS4xLjMtLjIuNS0uMDc1LjIyNS0uMTUuMzkzNzUtLjIyNS41OTA2MjVsLS4wNzUuMjA5Mzc1Yy0uNCAxLjEyLS44IDIuMjQtMS4yIDMuMzA4OGwtLjMuNzkxMmMtLjIuNi0uNSAxLjItLjcgMS43LS4wNzUuMjI1LS4xNS4zOTM3NS0uMjI1LjU5MDYyNWwtLjA3NS4yMDkzNzVjLS4zMi43Mi0uNTc2IDEuMzc2LS44NzA0IDIuMDE5MmwtLjIyOTYuNDgwOGMtMi40IDUuNi04IDguMi0xMi4xIDcuOC0xLjQtLjEtNC0uOC00LjYtMy42LS4zLTEuNSAwLTIuOSAxLjEtNC4yIDItMi4zIDYuNy00LjUgMTQuNC00LjkuNS0xLjQgMS4xLTIuOCAxLjYtNC4yLTguOC4xLTE1LjcgMi40LTE5LjIgNi40LTIgMi4zLTIuNyA1LTIuMSA3LjguOCAzLjkgMy45IDYuNSA4LjMgNi45LjQgMCAuOC4xIDEuMi4xIDUuMyAwIDExLjY1OTYzNjUtMy4xNzg5MDk1IDE0LjgyNDMwODQtOS43MjU4MjE4bC4xNzU2OTE2LS4zNzQxNzgyYzEuMi0yLjYgMi40LTUuOCAzLjctOS4zIDEuNi00LjMgMy40LTkuMiA1LjctMTMuOWwxLjItMi40LTIuNi0uNmMtOS4xLTEuOC0xNy4zLS43LTIxIDN6IiBmaWxsPSIjZmZmIi8+PC9zdmc+ )
url(
data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgNjQgNjQiIHdpZHRoPSI2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS02LjQgMTguNGMtMS42IDEuNi0yLjIgMy42LTEuOCA1LjcuNiAyLjYgMi43IDQuNSA1LjUgNC43IDMuMy4zIDcuOS0xLjYgMTAuMS02LjVsLTMuOC0xLjdjLTEuMyAyLjktMy45IDQuMi01LjggNC0xLjUtLjEtMS43LTEuMS0xLjgtMS41LS4xLS41LS4xLTEuMS43LTEuOSAyLTIgNy41LTMuMiAxNC41LTIuMi0xLjQ1NDU0NTUgMy4xODE4MTgyLTIuNjYxMTU3IDYuMzYzNjM2NC0zLjc3MDA5NzcgOS4zMjAwNjAxbC0uMzI5OTAyMy44Nzk5Mzk5Yy0uMS4yLS4xLjMtLjIuNS0uMDc1LjIyNS0uMTUuMzkzNzUtLjIyNS41OTA2MjVsLS4wNzUuMjA5Mzc1Yy0uNCAxLjEyLS44IDIuMjQtMS4yIDMuMzA4OGwtLjMuNzkxMmMtLjIuNi0uNSAxLjItLjcgMS43LS4wNzUuMjI1LS4xNS4zOTM3NS0uMjI1LjU5MDYyNWwtLjA3NS4yMDkzNzVjLS4zMi43Mi0uNTc2IDEuMzc2LS44NzA0IDIuMDE5MmwtLjIyOTYuNDgwOGMtMi40IDUuNi04IDguMi0xMi4xIDcuOC0xLjQtLjEtNC0uOC00LjYtMy42LS4zLTEuNSAwLTIuOSAxLjEtNC4yIDItMi4zIDYuNy00LjUgMTQuNC00LjkuNS0xLjQgMS4xLTIuOCAxLjYtNC4yLTguOC4xLTE1LjcgMi40LTE5LjIgNi40LTIgMi4zLTIuNyA1LTIuMSA3LjguOCAzLjkgMy45IDYuNSA4LjMgNi45LjQgMCAuOC4xIDEuMi4xIDUuMyAwIDExLjY1OTYzNjUtMy4xNzg5MDk1IDE0LjgyNDMwODQtOS43MjU4MjE4bC4xNzU2OTE2LS4zNzQxNzgyYzEuMi0yLjYgMi40LTUuOCAzLjctOS4zIDEuNi00LjMgMy40LTkuMiA1LjctMTMuOWwxLjItMi40LTIuNi0uNmMtOS4xLTEuOC0xNy4zLS43LTIxIDN6IiBmaWxsPSIjZmZmIi8+PC9zdmc+
data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgNjQgNjQiIHdpZHRoPSI2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS02LjQgMTguNGMtMS42IDEuNi0yLjIgMy42LTEuOCA1LjcuNiAyLjYgMi43IDQuNSA1LjUgNC43IDMuMy4zIDcuOS0xLjYgMTAuMS02LjVsLTMuOC0xLjdjLTEuMyAyLjktMy45IDQuMi01LjggNC0xLjUtLjEtMS43LTEuMS0xLjgtMS41LS4xLS41LS4xLTEuMS43LTEuOSAyLTIgNy41LTMuMiAxNC41LTIuMi0xLjQ1NDU0NTUgMy4xODE4MTgyLTIuNjYxMTU3IDYuMzYzNjM2NC0zLjc3MDA5NzcgOS4zMjAwNjAxbC0uMzI5OTAyMy44Nzk5Mzk5Yy0uMS4yLS4xLjMtLjIuNS0uMDc1LjIyNS0uMTUuMzkzNzUtLjIyNS41OTA2MjVsLS4wNzUuMjA5Mzc1Yy0uNCAxLjEyLS44IDIuMjQtMS4yIDMuMzA4OGwtLjMuNzkxMmMtLjIuNi0uNSAxLjItLjcgMS43LS4wNzUuMjI1LS4xNS4zOTM3NS0uMjI1LjU5MDYyNWwtLjA3NS4yMDkzNzVjLS4zMi43Mi0uNTc2IDEuMzc2LS44NzA0IDIuMDE5MmwtLjIyOTYuNDgwOGMtMi40IDUuNi04IDguMi0xMi4xIDcuOC0xLjQtLjEtNC0uOC00LjYtMy42LS4zLTEuNSAwLTIuOSAxLjEtNC4yIDItMi4zIDYuNy00LjUgMTQuNC00LjkuNS0xLjQgMS4xLTIuOCAxLjYtNC4yLTguOC4xLTE1LjcgMi40LTE5LjIgNi40LTIgMi4zLTIuNyA1LTIuMSA3LjguOCAzLjkgMy45IDYuNSA4LjMgNi45LjQgMCAuOC4xIDEuMi4xIDUuMyAwIDExLjY1OTYzNjUtMy4xNzg5MDk1IDE0LjgyNDMwODQtOS43MjU4MjE4bC4xNzU2OTE2LS4zNzQxNzgyYzEuMi0yLjYgMi40LTUuOCAzLjctOS4zIDEuNi00LjMgMy40LTkuMiA1LjctMTMuOWwxLjItMi40LTIuNi0uNmMtOS4xLTEuOC0xNy4zLS43LTIxIDN6IiBmaWxsPSIjZmZmIi8+PC9zdmc+
)
;
Enable --asset-image-ai-icon property
--asset-image-ai-icon
:
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8zOTQwXzE0OTgxKSI+CjxjaXJjbGUgY3g9IjIwIiBjeT0iMjAiIHI9IjIwIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMzk0MF8xNDk4MSkiLz4KPG1hc2sgaWQ9Im1hc2swXzM5NDBfMTQ5ODEiIHN0eWxlPSJtYXNrLXR5cGU6bHVtaW5hbmNlIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSIwIiB5PSIwIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiPgo8Y2lyY2xlIGN4PSIyMCIgY3k9IjIwIiByPSIyMCIgZmlsbD0id2hpdGUiLz4KPC9tYXNrPgo8ZyBtYXNrPSJ1cmwoI21hc2swXzM5NDBfMTQ5ODEpIj4KPHJlY3QgeD0iLTAuMDUwNzgxMiIgeT0iLTYuMTI0MTUiIHdpZHRoPSI0MS4zNTE2IiBoZWlnaHQ9IjY1Ljk5ODIiIGZpbGw9InVybCgjcGF0dGVybjBfMzk0MF8xNDk4MSkiLz4KPC9nPgo8cGF0aCBvcGFjaXR5PSIwLjk3OTM3MiIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMC42MjggOS4xNUwyMi41MDMgMTBMMjEuNjUzIDguMTI1TDIyLjUwMyA2LjI1TDIwLjYyOCA3LjFMMTguNzUzIDYuMjVMMTkuNjAzIDguMTI1TDE4Ljc1MyAxMEwyMC42MjggOS4xNVpNMjguNjAzIDkuOTUwMDVMMzEuMjUzIDguNzUwMDVMMzAuMDUzIDExLjRMMzEuMjUzIDE0LjA1TDI4LjYwMyAxMi44NUwyNS45NTMgMTQuMDVMMjcuMTUzIDExLjRMMjUuOTUzIDguNzUwMDVMMjguNjAzIDkuOTUwMDVaTTE4Ljk2NTUgMTMuNTM3NUMyMC4zNDA1IDEyLjE1IDIyLjU3OCAxMi4xNSAyMy45NjU1IDEzLjUzNzVDMjUuMzUzIDE0LjkxMjUgMjUuMzUzIDE3LjE1IDIzLjk2NTUgMTguNTM3NUwxNC43OTA1IDI3LjcxMjVDMTMuNDE1NSAyOS4xIDExLjE3OCAyOS4xIDkuNzkwNSAyNy43MTI1QzguNDAzIDI2LjMzNzUgOC40MDMgMjQuMSA5Ljc5MDUgMjIuNzEyNUwxOC45NjU1IDEzLjUzNzVaTTEzLjQ2NTUgMjYuMzg3NUwxNi40MDMgMjMuNDVDMTcuMDUzIDIyLjggMTcuMDUzIDIxLjc1IDE2LjQwMyAyMS4xQzE1Ljc1MyAyMC40NSAxNC43MDMgMjAuNDUgMTQuMDUzIDIxLjFMMTEuMTE1NSAyNC4wMzc1QzEwLjQ2NTUgMjQuNjg3NSAxMC40NjU1IDI1LjczNzUgMTEuMTE1NSAyNi4zODc1QzExLjc2NTUgMjcuMDM3NSAxMi44MTU1IDI3LjAzNzUgMTMuNDY1NSAyNi4zODc1Wk0yMy43NTI5IDIxLjI1TDI3LjUwMjkgMjIuOTVMMzEuMjUyOSAyMS4yNUwyOS41NTI5IDI1TDMxLjI1MjkgMjguNzVMMjcuNTAyOSAyNy4wNUwyMy43NTI5IDI4Ljc1TDI1LjQ1MjkgMjVMMjMuNzUyOSAyMS4yNVoiIGZpbGw9IndoaXRlIi8+CjwvZz4KPGRlZnM+CjxwYXR0ZXJuIGlkPSJwYXR0ZXJuMF8zOTQwXzE0OTgxIiBwYXR0ZXJuQ29udGVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgd2lkdGg9IjEiIGhlaWdodD0iMSI+Cjx1c2UgeGxpbms6aHJlZj0iI2ltYWdlMF8zOTQwXzE0OTgxIiB0cmFuc2Zvcm09InNjYWxlKDAuMDA2NjIyNTIgMC4wMDQxNDkzOCkiLz4KPC9wYXR0ZXJuPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMzk0MF8xNDk4MSIgeDE9Ii0xOS4zNjU2IiB5MT0iNDYuMTA5MiIgeDI9IjU3LjYzNzkiIHkyPSI5MC45MzU4IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGNzQzN0QiLz4KPHN0b3Agb2Zmc2V0PSIwLjE4Mjk3IiBzdG9wLWNvbG9yPSIjRjc2MzkzIi8+CjxzdG9wIG9mZnNldD0iMC41MjMzNTciIHN0b3AtY29sb3I9IndoaXRlIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFCMzg4MSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzM5NDBfMTQ5ODEiPgo8cmVjdCB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjxpbWFnZSBpZD0iaW1hZ2UwXzM5NDBfMTQ5ODEiIHdpZHRoPSIxNTEiIGhlaWdodD0iMjQxIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpjQUFBRHhDQVlBQUFER01pVStBQUFBQVhOU1IwSUFyczRjNlFBQUlBQkpSRUZVZUY3ZHZlK3JiZHVXSGJUVzJ2dmNYL1hxbFFsYWZzMWZJWVZJa0NBaUVvS0lTQkRSZkJEeGd3UVJDU0x4blgwcENnbUZoQkJDRVVJUmdvaUlpSWdmUlB3Z0lwSi93ei9EKys0OWUrWDEzbHZydmZVK3hseHI3WDNPcmVpN3ZQUDIzbXZOTmRlY2M3VFpldXV0OXpIbStmb1AvL0ZmK09sMCtndW4zNXIvZm5yc1ROcG04c2Z5Y2J5dzIzNitkdVB2bjA3UGNWdy95VWFmZUtqek8zYkhjN0ROT041bjNiKy9kN0F2L2R6eUdYenUxamJjTjdmSm4zRlNQLzMwLy80LzV4Lys5QisvWEM3WGo0K055TSt3MWZuOFpYZDZ2ZWIrcmlmYjk5WC9KeS9pVjd6dTI4dnYrZmw2N2V5ZnQ3L2pYM3lrL3NZTDhUMnZyL2krZXYvOGVqNWQ4M3ZrYzY4NHNMa3YvRzNmNjUvVGYvTlk3VDNiajIvVGordk0xL2grYm9kejJMeHUrNHJQNFo5ODV2U0s4L3VFNzdUM1hxK25xLzM4Wkovait5ZmI5UHZ6RC8vZy8zNDVYMDRQZ0FzWDRsRXcySFoyZ0RlMnZ3bXJSNzluUW5NSExtREROMjFBd3dWVUFQS2k1aUNlNG1MemczWXhjNXNOeUhKZ0NwQm5INkM0SEFyU0JJVy9QRUVYZjl0M0wyQVdvQWVnRllBRFlCTjQrTnNCMFFBa053YStOMjhVQi9DckkrWjBmWFVnK1hjQ1ZMNHZBMldDaitENisvL1hIWERaMFFzTXRvZzR0MDNhZU85QThnamdmaTV3TllDOWw3MEdvMHh3TkthSndTZUxOR0NTNVNaN0R2WUxnQTEyTWxRNTg1RzVOa0NYN3kzd0FveXZyeDIwZzhYaWhoanM1U0F5a05uUHptSlhZNjRGWEgveWZ6N0dYQTZxSXhCdEVNZnQ4YkZFMzl4MEE2SmxiMjhCMnNKY1pJdGRhSlFCdWNOZU5vaWZIUjRaZ1pjd2lPTklvQWlRd0ZJZFlBejFHaEpIV0JSd1pIalU3elgySVNzNm1QRjVBc2paUzlpTTJ4aUFQbjBhNERKQ2V6MmRUVzdaZHZIMjkrY2YvdVQvZURtZk4yRnhFTllLRGtDQVNGZ0FvR3czNEhJRVZPempzOEJGRmtsbEJkMjFoRVJ1a1BIcWp2YVM4SWlCZUd0NGpEQVhrYVdGeDQxZWFreHpDTENkMWdKUVc2Z3M1dlQ5TXFRQmJFdUl4R2VUdlNhTGZVSm90TS9iNzRaTll5NEpsNzhoemUvUFAvN2QvLzNsZERsdk5kZFZBY1BmRzRobXVCeUFTNmJiYkpjdllmQmwvNGRhN0ZFR3U2ZTdib1ZHdmpkMUZVQjd5RjRFdGQyNVM1aDhRSC9Oc05mWVRUNXZiS09EUGZWWE1oRFpTQk1Uc2hQZVF4aHJtczUxVkgxMkFSaVpqVUM2QzY1a0xsVzdlK2JaQXM1RFgxSllYRnhscDF2dk1WbzlBcTcyUFUzWjlUOGVBWmNDVElHazJWaXlJQWNvUHZTbThOaEFFNFBtbjMrTHdDZGcrQ0VOWTZuWGhNVUdhMmttMmJTVU13L0RvNFJZWVRiZlBrTWlOUmlZeXo1TGNKbSsrNmxZMFpucmg3L3p2eUVzTW80WFVNNDU0SW1BUG9oNDN3RzNZemt5MS9raWdsL1piUjlhODN0MytIbUV2WTUwMTYzUXFFRGFzZGN1ZTd3WEhuZTJBY0JXQU1NTnZRRG1JQk8xNFhFeFBqSkVaVEJrcDR0ZFlzbTdKaEVDTHJjVUxGNHorNlJ3dDVzaHdZYjNYWE1CbUFCVTJoRjRQY0QxdC8vWGwvUFpmSzZERUNkc3NReDZFKzN4K1dRMkJWeUNpd25CK0s0UmNyOGt1TUExWlNVb09TZllSdGFvNEVyUVVYVEh6N3ZoTWRsdytGQUNnZ2F3Q1phWlFZNGs0RkRnVTFQdHdpeTFsTzVMTXo4TnVXQTBZeTFQQ0ZTbk1YUlNleGt3bmNVQXhFOVgyL3o3OHc5Ly9MKzhuRTF6N1RUVkxlYWkrSFlRWlJ4TUJtdHNSbkF0M3pGWXpQNEVLQTkxMXlPaFVaaHJBZGRrcnkyUWFHNXFOa25kUTV6ZUFwZ0FhbUd2MGs4OVJDb1RiU3dTWmJhN0dTUVlaZ0F5L0REY0hCbzZDU1FIRjlrSmxnT1p5MWlObjNHOTlYbzYvVlNlMXcxd2FiYTRDMXRIb1l5dm4wODloTmJyMTR1RlJFZE5rV1A3ZSt6N1VpRjJDN0N0YjdZeFJ5V2tobE12cUxyTFhnSWtNaGNCbXo5bjlpaG1wMzVteTBBRFlORFBhd1o1dzNKNEs4Qm05amd6UUdFbW1xTHBhV1ZvWkNJQXJVWE5CWEYvL1dsaHJ2LzU1WHlTYkRGMXVRNXRnY1hIU05scXNOWUVXWUpMUlQwWktsbEk5aS9nRWo0c3FFeHdEZHpraG05aEw0S3RBZWlJdlRROHZoVmd3NHRhOUZjSFhiTWpKZ3VKMjk5Q0pJM1ZHZm8wVE03d3FJeEU5aUxZSU9nck5OSkVOZWFpb0krUXVJTHJiLzFQQU5lUkRzSndMUm1maVBoTmFIU1E0VjhQa2NKaUxVeUMyWkxwNG5zWDl2b3NjSDBoOWpvVTkyQ3ZuWkIvUzNoVTV1UEFUemJVRERmTFJNenNCS1M3ekZIRG8rc3BBcVljK1dDdmVuM0pHazNVdTVpdnpOSEJaZnY3aVpycnYvb2ZYeTZueTBjZHhSRGxtMHl1c1pxd2pXb3pmUGJzSUFFOGZ1UFNwdEMzMXdrYjBWZ1pOcCtlSktEZEFWZXlwbVM2L1BSZ3JyamM5Z0dKaVRTS3BYU0lBaUFLZ1lPOU9NQU1zZmhjMWg0eDRCRUpOMFhwOXdEc3FFUTBtUXdXU1dnbURhZERmeDJGeHlQMmNzOHJuSGZQTkpQUkFDNFg5ZWJhdjI2WTY0LytoNWZ6NmZJeDhLR0FrY3hQZ2JZQlVvWEtZaXRqcldDdkFiQm1XNXhQcHd5RER6RFh3bG9TRTZlT2FrQUl4QzNhSzRFb21KdmFhcGFGdGdDN0krNjFXK0VCZ04xMDhEUGJYSzJLYlFicDlzS21Uc2hqWXYxUmhUeXlRd2RxdXU0R0xtV3pUL0dlaVhvdkNiMmVyajlPNXZyRC8vN2xmSG9LaHg1TXNvaHphM0NZYkxZRG1iM1d3SElQWUFDamZjYStuSjhWRUxXd3FPQlMxcEpvMTJqdkVmYlN6MjYxRjBNTTlxemhLRU1WdFplRW95dzJEeEFrNjBuQitjaWUySWJDL2gxWnpzRzJLOEJHRmpxRlBIVWZYNmZOd0ZhYUZocEZiOWwybmkwQ2dEK0J1VnBZTkhCZEllaFZBOUZxY05DUmtRNUFsZ0xkQUlKd21Ca2hBUmI3U1AwbDd6dW9ERnhQREpsaTVDcGFGTkJOalczQzRrRjQ3T3kxWWI0VXloTGFHRXBudUd2aDhZM2VsN0taaVBQRm5yZ0hzS21wR0I1NUUweUJUNFlhWm1yVFZNSldORWQ3V0FUSURGaTBJeGdXNFhlRnovWDlmd2R3SVN6TnNLVnNsaUZPUUVaZ0VTQWk1Tk96a3ZEWXM4ZkJWcW5ITnVCcVlWdENPQWY0emV4bGNMNldEa3ZXRW9iYWhVQWQ3QW5nbSticXlCUWZDSTlCYUJ2dFJrMlZJVyt5SS92QTBCb3pReU5OVWU0SE9xMDU4YlFYbHRBb3dMTDNmcVNnRjgyVmd2N2x2MzA1dnhwenFWNGFka09XY1NUTXBVZ25RQWlJQVpqenBXbXZRM0FSV01LZTI1Q29JRXRXRStIZDR1SUFpcnhuREhZVFhJdldHdC9Sd3FNV2h3WGxLZkJGWUMvNlMwSFhRMTR2RVduUldWcDBkaFlGbS8zczV0bGxpdzFjWmZoMlRVVjk5WnJ1KzhKZXlsd01pNDI1ZnZYZnZKeXZsaTFPaTJERFpHQ2wySFFUNXZ4MW1LYlVYemFJa2prMmNKSGxhRDgwYTBMTGtacTVMdVlFRVJRL2Q4SytNUkEzQzNERlI1QkZQc0plL0k0ajRYK3ZOSFJEa05meGgwNnFEdFliN05XNklucTlzZnRmM2tZcWZWdVNSVXBodW9WSFdBMVhMMDRIMk03eXUrc3Roa1dDeTdVWXJZaS9hZUJDK1VlMUUwT1o2QzFsdDhYSGNqR3U3SFVKZ1E1R1BPUDNCVndPTE5WcHNZK0VrSVJpQi9RUmVONFJIak9xcVlQL0NNQ09URmV3VXRZZEpZUkdvWm5NdEdsU1ZKUHpyUUkvdkkrMWM5VDFGN3BZMHk4YkRZWXE1QjNRSXRwUjVvblNqcjJPakJHL3U4ZjFJOTc3eVV4VXZFOXcvZmhmL0tPWHEvbGNFdnBVd0JlZ1ZOZ0hhem5BTGtPa1orYjNBTGpJV0VjaGNRS3IwTEFMZnNWZ0Q3TFhUWEFwQzk2ekp6SXIzWVJIK2V4dGdEMGFIbmZkRXRySktqNFhRT2NBYStHeHZLdW9OVXJkMEh2aHFhc0tWQVJZdldlZEVjcGMxOVAxeHdWYy8vRGxkRFVyd2tEU004TUtsV0lacUNaeXRycWNyczFLUUdnMHdFem1zbTB6WE9KOWRlUVpkam5xeXA0VFR2Y1k3QjdBbkFWcm8yYXdQc0plRTN3VGdJK0lleFgxUzdpOHBiK09BRFk4TGRXRjJwUEY3eHFzNWRmakU3b2dzdU1oR012YzkzRHNMVFRTbVJjajFabkx1bEdqTEJTZHFQKzVnWXRoY2JEUURKUHFReEVJZU8zSzBBYkF1U1Z4Q0M3b010VmFSOENhZmZzM1FhVUl2R0ZQekN4dkdxejZIYmU4cjYzKytneHhuMkYwZEdQUWk4cm94MTlrT3cxN2k4aS9FeDc5czlVTnNZVEdUNTlDMUxzSDlpbTBvSWRHZ011QWw0SmV3ZlUzL3ZUbDVPVWZ5UmFOeFJKSVIxa2dRaU5BbFA1VmdpdFlMZTJJWkRrRkZyUldDNHZVYm5hbGo4UjdnZWp1Rmhzak5UKzlNSmRvb2wwSS90endpTSsvTnp6NkZZR3VpMTFwQmpuYmRJWUdzMjJ6TkxSejdObXpGU0V4QWVZT3ZERlhXUkQrSHNIbExyMkFDd0wvTndUMy9mbUh2L0duYmtWUVB5WElORXdtMEFpTUFxSUxkWVpHZGVpVGxlSXp0WjB4R3Y0TlFNZDM2MXpIdTlCWnROZjZpWGNhckEreDF3QmpocUV1M3RmR1FqMG15ZUNhTUNjcnZTYzhpc0FYUUcyN0p6STBTanVOWm9VZUhzUExpcXlSWVJIZHFEK1J2ZUJ6TVN3NnVQNnpmNUJXUkdXQXB3QUFBWmF1dTRETFExNkV2Z1FPd2RYWWkxYUVhVE1CMWlYMFY1U2FDTmJQQTVZaWJRSFpFWU45Tm52dE1zRCsydHV5UndYVGV3RTJTajRTSmtQY3ErZ1hVTG4vRlVBcTVpS0lYdU56cHNreUxOcmZuekpqOU5waUE5ZC8rdmVqdHBnZVZoZnZQZHhKNkJTOTVENldaNDMyRThEMDM0UFZ3dWM2bjY3VzhXQ2dBc2dXWU8xbUM5M0lDKys5dGVXOUNiSXR1RzZFUi8zODd2ZEgyQXZhNnFIdzJFUi9hYXlsUmJxRnlGc202MUY0MUU1VGRFQzBqbE16VTZlZ04zMVZvdDdBNWNEODZkVXcrdjM1aC8vRXdJV1dHNEJnaHNqTThCeUFnNzBjUERCVUNUaXJFUTV3WGUwMUI5WnpGcWc3dUdBRGJSMzRnTkhiZytUbU16ZkFGWkRhMUJzMU02VG8xcDkrZEtwNWRIRHJ2V2pOS1lDMDBzNFU4NGZaNDJUSzdwbDF5NkZZTUpyOU9QdUkzaGVOVkxJWE9od3lLMlJJakovVVhXR2s4cjNPWEFOY2YvSnlmcjE4ZEpaUk5sTDl4RklQTTBDQ2pGcnNRb0RCbGxCd1haNmN1Wnl0bnA2Q3ZTUWNCak1LQjlIcXVFTkxqd010QmxSczJXWkI1R0RqK3dwYzcyQ3ZXUzhjb0hzNFBDWndoeDVqNldnSFpDOVFieFl1eVV5emg4b2VIc2Ywc1dRb2dBZ2kzWmxMMy9PL0syTjA4Qmx6L1VqbSt1dC9VZzU5QXcrMUZHcUZKd0NIZWlyMUZRVTdtT21KSURVd2djRVlEdkd6c2tqdzBUdkFaZGYzUVJ3bXF4aFRScExWSWFSKzEzdllpOXJmOTY3V1JRcjBBL1k2Q0k5THNScjdyZFZuN3JCWGFxenVoK1huTWFQSHYyZG1rSmtKUXJpbm9BL0R0SFFYZ0dhQThuODlZNHl3K0IvL3ZSRDB5VnpRVFBDb0dQSThwRG1ncUtYNGU0RXJRcCs5YnRxSzd6ODVZemxyOGZWWkpDZExQWTZXcFF4MCs2TXk2Tnh3Q1k5Q2xjMUw2OFphZm15cnZSajJwTDlMalV6L1hSbFIySVJBbStHeHZsQW0xQjZVa29UWkFqaEQyS01jbE4yazF1WEh6dEtyeklVMDBlN0NYUUFFa0xIT2VEYkc4cktRTVJmQTlTTXl4dFJjLzlIZmU3bGNMaC9kblhkQVFGY1pBM240S28yVmRVSE5Cc0ZPSWVvdnA2c3pWd2gzWnk3N25lRXc2NGphb2ZyMmtNaG9NeVBuTWNDR0hUSGMrZTMrRWxNSDRNclF4WGdxdGo1K1RhYlFiUW13QVJwdFRTYTdSbWtHQUVsVzVJenRJNEJ4ZTRUSUhjQmt1bjQwRzRibThrbXh5QVFOV0s2dHFLL0lUTXdZazlFR3VGcFkvQS8vcm9NcnhEWUduUXdFWUtYQW4rd2xmdFhaQVVTQXhVOTdiUUhYbDJBdG91ckFyVjlCOW9CYkQwSkp3RDdDWGhNMHFySGM4T3dDUHZhOXFTRW1XOFY3MW1WMnE4aWQrNFhPNnZzRVk5bGV4SUxRVnVkYS93R2RFbXhmWnBIYlhIaDBQd1JEMVV3ZjZxNENIalNYOVhYUnBVL05aZUE2Vy9rSGRnTFphOUZmd1VScFRhU2VBcENjdFFpdVlDNEhGME1paFB6U044WU1iYVBRNzRyMkc2V2dMd3V3QjloTG1RZ1lhdURhQWJHRnlaRkp6dkNZbnc5bW9sT2ZJT1ROb1JwS0JiNHdtR2FPVWZZcGQ5NEJLU0V4UUZUOThnMWN6bUszd1BVZi9KMlh5em1ZeTcwcUJaZVlvZ3g3N2xjeDVCa2dFUVk5SXpUd09aZ3NleHpBMHBEb09oNkY4am5MYU1ZNi9IMEl0QnNBdzljd2J0MXAxNm5OMmlHOEpUeFN3Q2NMQ2doYUdDVjdDWk8xdnF4NC9UQThZbDhMd0RTTWl0WXIwN1EwV0xDWGVGdjQzVU1qTkJmN3RjNzJHdnZsSWVxVHVRZzhZeTVxcm1TdXYvYTNYeTZYcDQrbjV4THFLY3dsSTNSaFQxMlZUanY2M3MxdU1HQmRuazVYMjgrVDJRK2l0WmdsSWlTNnZwdUc2VjJhaWlGZm5mY0ROTXJMd1dJUGhzYkQ4UGlGMmV2UjhEZ1piR1NnTndGbXpMS3pKM1Q5aDJTdUFGcm9MZ0dZOTJnSnVNenZVdkRkQlplWnFCYlNuSVVDUkkzQlhOeGJtS01SS3BraVJIc3cxOVBwK2lGMFZtZ3dzQmZCNk9Xa211eXh6STI4ajVOM0F5eFk3RUdBVFRhOHgxNnFyV0k0NDB5UUdTWUFkdXlsNENGNzVXdkNYdHpmRVBoYlhXZmZleGdlZGUwdE1VODFORnEzQXdFRXhpcW1VbkJaT1AwcGJJZ3RjLzE3Ly9YTDVmd1VZZkc1cklZQUZ3RkhYV1ZNWlphQ2drc3l3NmZuMC9VWllkRitWM0NoaHZnbHdMVXcySjNRV0pnZC90WXRNTDhKWU1PZGIrQzZJK3dWY0dsVHZFTi9UU2FjWXQ1N0FyV095TlZyR0JvTGFFMVhXWG1IbVNPQWxzekZHcU50NCtCQ04ycUd4WC9Yd0FXZnkxaUk0VEZ0aFFKWTJnMXBNMFFJVE52aE9jQVZyR1ZsSHI0ZnJueGZYa2tnOG1CSTNHRWhQL29HZ0czRDYyN251cytEN0hIeHZUYkNQaGVNMnpGY2VsUEZkSWhsYmViMG9yOFNsRlBnQzJzU1lMdndhQm1odms5THd0cHJHQmE5YmtoN3dqSklHS1hUampnRTE3L3p4eStYeTNPWXFBNHVNcGFFUm9SREI1ZHJLM3BZRVFyamRRdUp6NWtkTWt2MG43QTBxdFFqUHRmREkzMU1NNVJVajBYVmpzS2J1SDZBdmQ0RUxnbDNHVGZUSHR1MDRjendlS1MvOEhycEwwZHNMZVFtTE9aZmg5cGhUQUlab2RFYUF4TThBQmQ2NkJrYUZ6dkNPeVBBWE5icW5NeGw0UEt3Q0hDWnZuTDlKWFhDQTNDeFh1amdNdFpLY05ubkFUVEpFbjh1Y0NVK0gyS3ZkYU9IQVhhVHZVYnBwMmt2VHBobFFWc0syNkxOd2pSVnpWYUdxSnVjTFlScUtLNHcyaDVRWUpuVENJL3BmUmtnZEwxNWdzeFhEUlJkWmF5RTdnanJkdkFDTmd6VTFHRmtPQXVMRFZ4LzFaZ0xWZ1NCaGREb1dTUC9lZDlXNkNreVY0TExHZTlEaUhreFR2TjNpUGlmRTF3T3NJZkFKWU0zcUc3Zm9qTTIyb2o3WUs5YjRJcjM4L2kwSkxUN1hOS2gxZ1pqSHkwOHRnSzJBS3kxUEdNZjRuTmxUWkZabzN0YkFUWnZYYzZNVU1NaUhIdXpJaWE0bExrc3UvenhlbnI5ZFAzKy9NTmYvZU9YOC9ueTBhMEdPdk1mTk93Vmt5M2dndDQ2bTRnM2NFSE1GMnNGR0dtY0hvR3JMZUliTFlxUFJiak5WbzhCN1BiK0c4aDJteXE3SkJtOUVWeXFtZTZ4MXhJZU56NVpXaFRqOFNwa3cxenZWR3FJYk1ISk1GbHROQ0hhTzdnOGd6d0VWMlNNUHIyc2dldDAvaGk2U1VLakE4VWEvQXBvYmtWNHRnaEx3cll4Sjk3Q0ljUTh5ejNGWUkrQWF5KzgzZ1V5NjVaNENKcWZBYkFCcm9wV3QwTmpzdXVSc0o5aGorZWhvUzBqcDJhVUVtNk5JUjAwbzZkczFCaGRWMjNCTlppckxUZ1M3TFVQaTlmVDZkY0RYRC8rMjMvOGNyWHl6eFBha1RVMHV1TmVvVEY5THJqdzZjWjdTS1NZaDk1Q0NJMGVzVmhncERFWEx4enFOR0dzNW9zTkhtOEcyVU1BZTR3ZHQ4bkN1OEMxQ1kzdlpLOE1rS3JSR3BoMjdBWDlCcEJsa2RwREl4akxmeEpjVlYrczFXeXFtTDBZcWRhRmFzemxtZ3RoMGNEMW0zSC9hTjBNekFhZHdkd01QU1BVbFJNZkdnemF5ekpGaGtTWXB5ZG5zekJRdzdvSUd5TEJsU1FsYU5xME02U0xENWk5Q1dEQXpXMEdld3hjZWJqYnpMRmVUTjJWSWE2elNWeUEyUDdRVk9WbkYyYlQ3b2o0UGZZMGkrRGNEaDZXYXJ1RnVXUWVJbDE1MWdxZG5XUUtHV1lBR2NnMFkyd2xvQzI0L3EyLzlmSWI2L3FqTVZRd0U0QUUzZFZFUGNKZ0I5Zno2ZlNCNW1rSitqMjRKUHpseUFNMktBbE5RQ2pJL21rQ3pNWngxV0lkY2ZlRnZZQnJDWUVNY3dvYVFhb0NEcjlYOXdSQnBhRVE3QVdQcTdYdmNCMTd0ak16UkxKSURhK3Jzc0hxU04yREM2dmRMTXhsNEhMbWl2Q1gyc3NaNllKYUljMVZDSFIyT2p4ZlR1ZG4wMXNVODlJVXlIMFpjekVrU3RSclh2bUd1WFF0K25jQlRNYjltTUVlWjYrWlk3U1daWnpYbDJPdm5YYTd4MTRBb3F6SDFXd0plMXVta2JXTU1jR0Y5aHEzSWpiTUJVRmYyYVQwMkdmNTUvVjAvalhENHI5cHpIVnl6ZVZzd3hxai9YVDJzaEIzUG5tNFF6ak1OaHB6NHcxY3lsd1dFcUczR0JaekNCa2VId3lOdmxuVFpBR1RoeGhzNE9hekFYWVFGaGVtVFlacGlKTjY0NWRtcitHZFVYc2hlMHlUbENRSUlOMEdsODJ3bGlsa0RJdHZCOWNmdlp4UVc4elFTQkZ2NERMMmNoK3JneXRzaHdEWDljTUh2TTlzc3RwdTJuS1h2TVJrS25aSGtOSDBwN0JaWjdFdkRiQWRlOWwzak5mdmFDNFBtN244aElhNHZmWnFucGVHeU5rbzJONmJRQnJHcXJLVFdCUEwwcFlzOFdoWXpCblUwMFNGZzgvT1UraXVlRW9aRWdEYkQ1bkxCSDB5MTc4QmNDVnpzUXhrekFYaGJxWnFlbGdJZlI0Mm4xM1FPN2hTNUZkTjBTZEVtS2puVGF5cXBRR3NwblIxSnVnemc0ckZmazZBOFFqZURxNjZOKzZESzRYOVlxTHV0SmNjeTVGVG44WHkwVGVmTmthRlZYOTJFRU9oTDR2RWNBaGZ5L3JwMlJYQjRuVDJ5NXZWRVd0SFZDUGhFYmoreWgvRkkvRXMvTGt6YnpvSzlvTXpGOXFYQVRRTmlRRXVsSDBrUzh5Q2RiYlgyRE9laFpZMm9TN2VMV2gxR1JZZ0M2THJtZWZkRUxraHBqVkVjcU1EWUltdWJpVGJuSFI5WjREckFFQTMyWXVNeFYyMWNKc3Y5aVhKOHpNQ01QdHUxMXFpMlpnVm9saWQ0R0pMc3dyNkJCY1gxZzJMd3VaSDltd1J6WUtOdWY3eUg3NmNucC9RenhVaDBPMEZhcTRkdVB3MUUvSlBycmY4SDhvK25GV2RjeUN0dXlLdk80QWhJTW1seEpmUUNIYVNyRklCOWlhUmZ4ZGd0b0ZDN2tEb0w2RlJHV1dld0FGN0hYUk41RVhTOTMwWHM1OWVrRDR0aTFGSFhOYkMxM1VoakswNHU4ZGJhdnJmb2JsMC9kTmF2ZG0yTGViaWxQNGpjRmx0RVlBcWNFSEVmNFhXWldVdWdvdkFndjRLSVk4V0hKbGdxK1Vkdng0N3pYVkRmN1dubUhIVlFXbVRmZzk3ZFo0OEFNYTlseHNkVDVsMkZCcDNHbXhvS2Y5ZVlTZitlY1JleWxoc09IUldJamk3Z1JxZ3Nsb2kxMzZ3c01qSDNHRlZHMzJvQWR0dXNuRndBeTU3endyWHZ6Yk45UnExeFIvLzlUOThPVDJkbzgwWjNhTXRMSDZ3Y0duNktxd0pCNCtCeXkwSVk2MFM4d2t1bWNvZkM4UEZmMXY3QWFEeVM1a1NhNWZiMlRRMzdLZ0I3RUg5ZGNSZWg1Rnc4NEZiekxXRXpzbHE5MnVQOTlsTC9DeE5PRnA1YUlSQWZZOTk4N3JzNUt1Rk9iQ1dNSm1IdldRdVBrZ3EycDFaQW1waE1jSDFTUVQ5dndadzBYWnc3d3BoMGNEMEZjQ0Y5eHU0dktZbzRHSm85Q1dUc1BnSU95SkdhR3dLNVNCN2pKY1ZhQU5nYjlGZk8zRGRqSVFQaE1aSG1FdEIxelFhOTYvNlNhNEtzejJ5MGkzMjJtbXRDVGlaL0Jvc3hWNTVkSnFxa2VxYWl3L3hyS1hBYzhMR3JvL2V3ZlY2dXY3NktzejFyMzcvY25xK2ZQVE1rT3hsQUhQTlpab0tmZkdaTVVhVzZPMDFNRkJwVTdobDRXdDF5UUp2b0tOZ3BnMGphWmpjbUsyK3lrUDdIQUVHa1M4QWUzTjRITXRVZFBmaEFYRHB3Tjlpcm56dm5leVY0RkVObGhWc2hJVWg0ajBzc2g5TUYzWmpIYkVNMDFvQ3ZDYkIzZ0pYck5jbGsyYXo1UWFQYU1tdytLOTgvM0w2Y1BsNCtrcHFobTZPM2dNWHdxS0hSdFFUZFhhUWdZcXIzK3hBcFRmcHhxTElhT1hNaDRWRUtpNENwd1V3Q3Z5YkFHc1pheDFBUXI3aDZSM2dhZ0Fibjg4LzczZE85UEM0MFY1SFBXQlpTOXpZRVp6NG1yYURnb3doRUd3RzV2Sm1RcTZOS2o1WEE1ZlBESUtGWVYwUnBybXljUDJYQkZ6aWEwVkIyc0tpc1JSOExuaGJwYm1NMlJBVzNabm5Lb1BGWExOWHE0VkQvakdZU2JkUmJ5c1hwL01Od0dCdjFWOHpNYVNNdThjOFBLaUhkZGVSWnZ0TTlqb0tqNHZ1R2dERGVxWmR6R1B1SWtzOTBvYmozYWpVWFh5dW9zKzgxdVdUMkVBbzRMSUY0Sks1REZ6UDUyQXVCNUVWb2FHNzdvSUxOZ1E5TGdVWG1DdG4rd3g5c2x4NnJrQWpKWjhZVDFvU01jRkRBVllQd0tyUVNUQWZNdGdCdVB5YkhtR3VDY0pEM1hVRFhGc2R0bU9va1ZuT2JERmxtLzF5Wko0U1FOVmxHbjFjc2c0RTE1ZHY0SW9WQ0dQT29naDZYZlVtUXlONjZJMjVGRncvL0tYdlh5NldMWDVOY0tGZGhock1CTDFyTDNoWnlCd3JXNFRmNWV0SURNYmkyaEtxT1ViR25rT2c3TVU2U3E3alJhYTZEN0NId3FOUzQ0WktOYi9kYm5xTHZXNEI5R1pvRk1RNUN3bFYrdTgzd3VNczlYQjcxMTNWQTU4aS9rM2c0bVB2MWhWdlNuY3B1S1Q4ODhPLy9QSnlvZVl5OW5JUDYrbDBCcmdDV0U4ZUhwa3BybFlFT2xOZEg4bFNTMHVteUNlcFFvUE9rWnZhREg4WFExMmN4eXo4NXVvN3lYUVZKdSt5MXgxd0ZWLytHZWd1eDgwbWMzeUkzY1lralcyR0tBd0ZSejVBQmtHZkxuMzFkN0VXR2N5RjEyVTZQeldYTC9UbXJyN00vbEdmYXdHWGw0SFlCSGdKMXZwcWdxdG5pMjY4NWdvNFhCc1ZOVVVKZDJ4eGE5ZHpETFJxTkMzMzFNTkJiWTNBcUZreVJLWmw0VXdYMEhnWHdBYVdIazRPNWdrcDYwd2dOeGFTTjk4RE1ETGN3bHdJazdxOFpIdEtobVNLQ1Rqci81SkhzMkJoM255Z0FSZDVhN3JyRVhDWkZXRmhFUmxqZ3VzRHdEV1l5ME5pV2hFeHM5b21lTmlBaGcyQjhDaldnbzZiZ213bGtXNVh1TTV5dkhDOU1QekVXdmxrTUxJYkFmZnU4TGdocXkzSUhncU5EK3F1NVc2N2t5RTJmZFViQkhNcUdkbkpYSHFHd2N3WUt5dk05Ym44aWJFRFhHeTdjZDNWMTR2Zzh1SDNtWXVheXhqSzNYZFlFZDd4c0RKWGdDdTBsdGNZM1R6bG9yc1NHdFY5QjRyaXNvSE9kN2JYMVF4WWhWd1ZxaHVBakxrV0JyTnRQek04SGtSQzhHRy9GOW9kTXo2b0RMWG9PdG0yaVhMUldWczIzRXljVmZiSzV5cXlGVWI4TFJhd0NUcjdIQmVCZ3hQZndPVlBpdVd6ZktRcEVObGlkK2sxTElwRDcyRnhnc3MxRi9UWERseVk3VlBncW1YQitlU05MUFcwc0xnTEE1RVFYdVBCUTdHQnBHM3h0TE5TUVkzQkZHQ3V3N0FQU1FUZUhCNXZnSXRIbjB4Mmw3MXVhVGF5MDhFMW1RSStwVmtBckQyMFhicFBVMC9wRWtsOFg3TkJoc3lqc0loV2FLNHJuenByWjBVMHphWGcrb3N2THhleklqd3NzcldaZ3Y3cGRIVzlKZG1pMXhxUkliYkZSdW9KWm13UTlNc0hFelRBczk2eEtUVm1xYWQxUTF6eGpDc0JvR291aG1LK1JwSC9sdUwySUkwMVhHOWV3Y0dYQ2ZzTzlqcGt2d0pmeWdpWFV1SzZwNENQMTRONU9HVk0xdDZhNEdMTjBNTWxoVHcrTDJ6MnNNOTFLT2didU1CV0ZoWmRVd0ZjMUZ4WnNNWjczaUJZWVpHZWxzOGlUeFlLRjcwZW1DbUp2Zy9PMEZoRkQ3VzhONEIzdm1CN3h4aVdkZUpQckx4VFdlUTd3K01Eek5WZ0pqNlhIMmFySDBJQzdKQzZiRWZkSUpsajRrczBHQUcyOGJXaTBBd1B5NEVtWUd5Wll0ZFdBVWh4NlIyMDdOblNCNlZMZUd3bG9LT3crQmRmWHM1UDU0OW5ZeTc3bDVvTGRjWEJYRDQva1MwMi90UEF4Wm9pbEltQlNVbzFiSGZRSktwZlc3NnpFV0VFRnBuTmkrSmNKeHppM3RmQjU0TVZzQ1krYTVKdnFUMStCbnNsZmdab2pzM2NqZTVhd0ZuYnhFd2ZyUit1d0lsK2VRRE1OWlp1UTBzQ3BxcXNnNXFQdWh1dmJabExRRlZ6RjQrc0NBZlg2ZVBaUU9SR2Fsa1JLZWFWdWJ6bGhtSytWZzhNS3lJWWFyZHlZSUhOaEdLTjRvNG80alU2ODBWbElha0lLQmJDQjhBK1h6ZG5BQUFnQUVsRVFWUlEzNlQrcXV3Uis1dTk4VnRXZVNnbzFrYUxTOStCYzV4dDdnQ21vajNBVWNBNnlBenBWZWtxZ1JOYzB0YXNvVENjK2dCY2V3U3hyT3k4YytoRDBJc1ZZUzQrYTRzcy8vendMNzI4bko5UEg4OWZBMXpJRUtNM25wa2lOQmZESWlac2NIRzNlQ29HVzJ4RTlpYmJWSmdNU3lZdXFzOUFHVkpNbzJTRlZoYXVBM1RwYi9sS0FmVThJZ080cjJlUlRQYk83UEd0b2ZFRzQvZ1JUL0RsdmZVWWV4MnlsZ09vRm05ckMra3F1S1lWSVRxcmZWNlp5MEROYmxTV2YyaEpaQWxvQnk0VjlBa3VDNHRzQ3BSV0d4ZnpNRkhoM2tmaklLZVExU05YOUZFclpDcFhTWjR4b28rZXdKb0Rva2xUMDExZ01iQmlBQXRUenZ5NVE4cG1JenhpRVpRM2UxK2ZDNjZOOW5wYmVGVG5IV3ZiVFBmZGpqSDFGWHF2R0RvcDFIa2pKMnN4Sk1wcWdnS29oYm55d1ZKSHRjV0htUXZaSW9ROHc2TUR6a28vN0VoRkoybyt1TURYazNndTBRN1o1SVpxZ2lRWUpIREZFcERldFdBeUNZY3RNR1hMelF5RllDWThrQ0dlNndpQVlTa0IxMkl0ZTN3d1BINHV3QVpiUGNSZXFmOExYTWxhQkt5NjhRa2lBVmNDRHNuNUxkWWFwdW5kc05pWUMwdUtzL3lUWVZHWjYxLzgxY3Y1dytYajJkeDV0eU5NVDVuMndoUjkxMklEWERJNTFoZlo1WnIwN3NpTHFCZHc4Vm9IdmlUN0dZWHNVbVB4Mjlvb2lBNi9kT3p4ZUJpYjJJMzJhc3NZZlEzOC9ObTdLUjd5dnQ0RHJpOFZIaE5BZzdVVVlHbVlobEhxTmtTeUcxZTVFWGFEcmxyMDFpRno4ZG1MNklvd1lMSDB3eDR2VHV6Z1kvRVd6WFVFTG5hYkFseTVzRnViSUJ2QTh0NTUrbG1jRDQyTTBjVTcyV3hxalZ4UVE0cis3aENPckpFbG9FRGJlQUJvUFV6MHpFZktVTlNUdmY0L0VoNFAyV3ZlY0dJM0xEY2piSUxvTXBXVm1Ra3NBd0VySUV0RzZMRzBQZThubnYyRFIrVU56Y1VIZS9yUFZyZ3U0TVVhWG1aWGZOb0krZ2t1YytiSld0UmFiTHNSQzhLRU05ZVhpSWQ0b2hzQ09Fa0dTNm9QWktraHFCZnVLR3ZzZllTYk9pUDZ4dHpmTXBlZXk1b3pQS0t2MzhNbGR5YUwvNzZwT04xaTlZMC9ibVNQZDhPakdxTjV0WFRTUmEyclJhWnlDNElBM1lKckF5Z0ZxWUtyRmJobGF0a1J1SHhaUysxRWxXYkJILzdnVnkrWEQrZVBwMjlvUlR3QUxsMHpJcDhaRk9EaU9sdCs3QzBWUkkwUUYwRlZGclZZVHgzRmJHVlZxS1lIU1VjRUhvVEY1Mmo3WTJFQU5JWkZySXV2blJWK0dHenBPYkluM2hzYVozZ2NmeThBR3pJaFFLTzNJdjRXQWU5c2ducGhYd2ZWYWE4VzIyMmFTOWl1bFlkcUNmR3NMektqSEUrTHJkV2QwVWRQY0hFNnYwN1FjSEI5Wloyb0FKZjNkS0dsWmpLWHJHN0QrWW5XQmNIMjVucmtTdFFLWi9jRC9Tc1ZxWTMyTjJUZ2JzVnNKRXhqRlpsanpwRU1BNVdMMVBudk9aY1NpNnlJbGZGUTU4VFBCRENQOER0UTdUU3BocnltcmNKVTNZS0xCdXBPMEJNNC9yTS9jekduazZsZDBiUldudzEwYnVBYTh4YVR1ZHlodDh4UW1NdkNJT3FLWG1QTWliT1llb1lud0U1d3hUVUxBMHZIQnZkVVV2Z1dXS3JERW14OXBrOU9jSFF0UmhNVkRPYUFxcWQ5WlBiNDlJeW5xTDB4UEg0T3VIWU1KcSsxUitaQk5QZ0Yyd242b2JIVXJUOEVWMmFUbzl4RFVHVzJXSXgyRjF3TWo3bkM4MndXMUd5UllkRkFaYUdSek9WVDlTZTQrT0FvenFxTy9xMVlJelc4ck9wd2tNQkhsbmV2aXE3enJNTnBvTHloWnl6VWlWTlBvSG1HeU1jaTQ2SHRQc25FbWF6V3lqKzdiZkxHN1BGekFYYVFSWFp3VlNnc2dNbGpoVk5MZ1dteUhBUUdCTHVaTWUwNmNzdGNCNEplbUN6QlpmdGdTRlRtd3FPRzgvbEFTMWpVTm1lQ1M1bUxpK2R5M2lMcmkraFNiUStZc3RWeCtEZzlQeTFxcGNGYWZ1MEdnTVNmYUZzYmUyMm1vMmw0eklrYTZ0QVROS2d6T212NUV6MjRxQjJXZlRLd1NYdE83MzQ5UU5LWEJCaERXWUpPckJsK2o1WjkydnhENkNPQTZ6eW03RGR3TGN6MUNMZ0V2RzQvd0VCTnh0TFhzRzRxdXlKOGdzYnI2ZndEbjNHOVpTN09zc2Ewc2cvUEo2czlXaE1objZuSVp3QTVjeG1nYUdUQ1ltR1NXQkhTNEZPMW5rcW8rTkRKU25nVzNtck5nNkxCbElHa1U5VXpSd01Vc3RnTEp2UlNmL0Vob3dXd24xbmM4NFNvbmFpMzhpSU0xb0lnOXh1dXJXVXFYbGFDUzRFWjEvSk56RFYwVno0cWo2L1ArWW9OWkp3WUd6WkV6TGpHV2hIK2pPc3RjNkZueTEzNWNPN1BObi9SU3o3MTBFNCszU3pDSVFER3dqMHVLTGxxM3ZnaExhS0lIWk45UnNGMkZ4bVZ6Y3c3ZFdrbklTNkwyZ0VzUHNhUHl4TllTT1FEUmpOVTh0ai9yTExIUTliQzdjZ3NNUzJKZ3lsajd3RlhzeDlHNWppOUxnK0xSMVpFdGQ1RU0rR2MvZk1JYzNtaE9sejdZaTZzOGl5enErdEpaQ1hpVTVjMmtJR2RVQUxLUjRYa25YMURhK2xiNGxjeHVqV1F3ZU15WnVMU21iRzR5dFBwZ296WHRSZDYvMUdzckc2T0tGYXRCL1BlMERpeXdrVnJ0UXh4ZGtMVVk0Vjd5dzB5Ulc4RXJOYWFRK2E2SWVLM1JpckJKWThnenFmQ3lzU1BCVncrNC9vV3VLaXRoTGxpSFM0ODRNQ21qOEZMNHJvUUtlYVJLQVlSeVdnSU1ZWFc1RVVoK3ZZak4xL05tVDVNU0pGRTFFd2dzQ2l6Um5sT3BDMVU1L3JMV29hdzVLYUh5dFJmMm9mMkJRRW00RnJzQjE0anZSNnR6ZVkydUx5Z2tkbGxBTTd0bXhidStxUHdBa3lidmk0K2FFclg4VXB3OFZuWG9ybXMvT05oVXBqckVGeG9kYzRsa3dndVRvcTE5VkgxaVdWMDVYM1dUNW1relhLUSs5ODdrN1RnUDMwZUNqV0Y1VWJZNTlvUkNJdlo5SXBzMFJrTE01R0N2U0piTlBaeXhzSmorM3hsUkF1VnNwYVlINEo4NStjeldPOXcrUG5CRlRmdWZYRDFaMXMzdDM4QjE1aWcwWjVpQm5mZVRGUUsraTF6ZWZHYTYzSFYxUDd3dXRCbUE3SHNxeitmd2tEMXdkaUJDL3JCelZVQXlWbUxWSjV6TWJod2JJVk5qVW5KWGxwajFLSTJNMFpxTUs5bGgrYXlZN3RJcDRSbmo4OGZrRVhHTTR0QzRFZUh4ZkxzN2M4TmtidVEyS3dKQ1dzYTN2aTdab3FxdzZZVklYOXZ3VVd6bEVsQzlzOGZtYWhzQmh4VHl2TDVpeUxtVTNQTnA1WnB0bWpna2pwaU1GaE44MmRZcEsvRmVtTHZuWTk0bFdFdk5WY0FpTXpGZGR6ajJ1ODlydGpIdnZVNVh4M3pHbjF6Z08zQ0dVSFVZQ3hvWTRueldFUGYxblVGd0tTVitxR0hYZDNWWUtJRkFMSkQ1aEpnNVJNeUNDYWQzWk1aWnpGaWhVWG90UjF6elNKMjdsc25jcUFiRmNJLzJwaEhEejJ6UlY4VGxhR1MyZUlkY0YyellkQWVjQUFuWHVZenVsbUtRZks3bkpOaHMxZTlPS2ZMcW11VXcxSXJBVkJBWEJ1bkE1ZmV6WXdXc21xQnJYRHFlMmVxMTdRZFdKak1BUjBXZWl1V09UOS9NQmFMUmV3eVBOSU0zbmx0VStqZkJOZ2o0S3FicXdUN3BrR1FOK0ZrTDIrM2dSREJlMXZObFIycjByM3FMSFlIWExrSVNYK3daejZhbU5taVdSSCtZS25yUnRCYk44VFhsOU1WNjBWa3R5bXNpRmlQUHB4NVB1TTY1eWhLbDBGMW9NYUZUZU4wK0Y4NnpVekYvYzZ5Mk9XUU9lNnpIU2QxV0xVL080T2hpaEM5WHBFNUJyaWVUeGRmQmlvWVRNUGoxRjg4amtXSEhRTHNCcmlPUWlPb2ZXbHQzb0VMWUZKd3VlUklRYzhKR3lMZVhlaVBUbFMrNW9KZXR0MnN5WldtYXJaQWl4WGhqMmZaZ2N0RDRnRzRLT3pkNTZvYVhtTXRkcDZHYVJVaFVGRHhLanFyWGg4TGs1RHEyb1dYblRCc0tkclkyVURXU2kwR1VZL1hML200bUZqRXBBSHNLd1BZVndCWWxJZW92NDRBdGdPODQxclBnZDBKY2o3dC9XWGJNZ2s3dU1iRURDMEZlUWdjVmdTMVJ4YXRoWjFtUFZFeXgwd0NkSExHcmRJUCs3elF5eFhQVzN5WXVSQWEvUmxBbURCN0JDNkdFbmVJdW9aeXMxVFpYeTQyZ2RZMG1tNDhTcERKSHJLUWI2ME9YV3VtTm1zQzYwb29nMTM0eUQ3TEZqODhPWHVkdnpLQVVYK3h6d2RaOEM1cjNTRHNIcmdhQUNlNDdFMEkrSlc1aHBtYUFwNWRFVU52MFlySWliTDR2QXI1QWJUSHdBVXJJcnRRMFNqSVoxejd3enluejdVTGk5Wmw2Z1hzZXNDVU8vVE1EcW01NkhKNzk2azhWTjR6d3k3WUUwejVzckpYZTllSHJxYWhiWU9qckN0Um1xdWNlNW04Z2REdERFWnoxWi9VRnZYR3kxY2ZRbjk5OVZWb01IbVVIOEY3YTVWRVVacXlHb0Y2ZVJVaTc3S1hyZE1nNEdubXFRcjZlM29Md256cUtpNlJGSE1jTjUyb08zZCtsSDE4K1NSYmhva3R6dmZBZFpVRjREeExoRU9mV1NNZXFxNWFLekxHVk9tWXV4Z2hNVzlNRWVnelhIYkdrb0FwWVpRRFYrOWlrb1Vra3JGNENjTVo4b2FzTjdKTVZOMnFGOVFkMlRWaGszc3ZYMzg0WFl5OUhHQWZhdG9hZGR6d3dPNkdSbGZXMUFlOXZMWE5Ha1dzQjNtUFJYUHpmZFlZdTRHYWVrdnRoaWJhUjBjcTk1K2xuNkhGV3FhSVJlUmtaY0Y4UEF1V0NmZDE2SStZYXdWWGlIZ3ZBYms3ai9VZ3VEeWxEMTRzeGtZL3UzZWlGc0lvQXlRNkJqTlJtYWttR3dMNTFwSkxtU1g2L0l3ZXlyd2t0SFB3TCtjVEdZd2RIdEU5OFhRNmYvMzE2ZkwxVnhFaXpYQ2wvL1VHZ0JWd1lPU2xHSy9icEQrYWhReFhvYThYclhIVkdOSjJIcGV4SFM1eUZLN0pTRHQzdnE4UndVa2JUY3pidmhKYzRzN2JmdWRVL3B2Z3dwcW9uaWxtdGhpZEJiUWpiTkZkRi9ESXV1Z2xzYlU1czBRM1RPTWlCclZMeHJqVXB0V093R2RFaDB5dnJBSHp3RkJOYWNUZUxqRmJhekt0ZXhTbjBtQjQ1aEZLUXc2d2I3NEd3S1E4MUFCV2JEMFpyTEhTaHJsdXV2UmV2amtvVmplUEM3VkYzclg0WE81YndiV2JxSkVoTTBEWUp0VHVsazhhVFlKdHljb0UxMDdRUDU4L1hqK2NBMWkrWGdUV2Y1REg0ZmtzSDMvK05SeDVoSndFRnk1OGFDN3A2YUxYUjVHL2VBMmx1UlJNVGVzdURkTTZuRVBFNHpneVVndWJKYmljNVdKS1dtYVJkbTRHT0N4WDRBRDc5aHZYWWM1Z21xa09jZCtlUTFSM2x1VExHNzFWbW9GM1ZVNE55NURJc0RYMUYvNTJwdGs1ODlRa3UyeHgyaEJMU0F5d3Vjcy9EVlJkTnR3RlBXd0krOG5IRUMvWklzRUZVUjk2eTFZTTVPUHhNSVVNZjNObXRYY09zZXlEbEQ5blZrdklpM1B0R2FSZlVmZStoTDNJZHcyQVFuY2JzejdZVEo2c0liKzNsWi9uMUg5cDFYR0F5Wk55SFhnbTdyOHhCaVBBQm9NSml5M2FxMlc3RHdLTEdpdUwxdkprMXdOeHYvVzN1RzM2VmQwazNSYXN1Y2hiWXpPRTFvMlFUOVp5S3dJaDA4RzEwMXhQazdua1VYaDJvY0ZnN0lRSW5SVlBJOHVaMVpqNTQ4RFRVSWhZaHZ5SDhUTEhJNWhlaFB3OXIydW5vcFZKMVBlaTNpS2JlYWpzR2FRRDBEVVlIL2hlZnh2QUx0OStmVHAvOHgwWWpNdHhLc3FyU29CNzQrMk1SV0RoWjRYRlcvN1dwcjFaUW1ST2ZzMnBZcU9QbnIxYXRnQkpzeTJzeHc3MkJydFExVXlGNW1yUFdrem1PZ0xYVitkWWg5NmZVblp4NzRlaDBPN3FtUHhxT3F3SzFTdTRlbWNFcCs0cloyazA0SHB3cWMwV00weVF4QTlpWEdPZm1NZkl6YXJnbUNYSlhGdUNRTXMrKzVpaEhkRWRrenFNc2YwMWhraTdIZ2F3YjAvbjc3Nk5EQklUYkplSnV6djZ3ajF6dnhPaUxJdERaMTdGdkZvUUVQTFJJMVptYXRnWFhBeE9QSzVOcTgzc1BxMVZuQ25lcGI2STF1Y09MbU90bUpudGJjN041ekxtYXVBNnh4TmdBU3Evb0FZcTcwTFZ0VTh4aFl4WkkxamoxVlB3S2w0blprYk5zRnd0OGJwMkFHdk10bEpYTFczSk9qZXp4dGlXQU9NS09YNllDYklJcVE0d05nOXlLWExUWUM0UlBwd3VCcTdmK2E1N1lOdUt3YlFleEVFdmF0czhoRE1vdnVtdEp1eGxkclZvcldZLzJJY0hDUFB2QTYzbFU5TjJkVWV5MmE1M25ucExHYzFxa0RmRFlqSVhXSXpyUUZpVzJKb0R3MzVBdDNhR0dvYklCcHJVRXIwY2xOdk1JdldXdmNCOXVhN1hMamFLRlVFOVJDYkxVRmxUMU5MQ0dEMWdXZVIraW1VQ3ZCY01xL3BjdnZzdUFHWWl2NW1zUGNISVNhbDJoY2dtSlFSS3dJOXdDQVZSalh6YnJOSEMyRUc1Wi9IQnBDbHd1MWFFWm9yYVBJalBMYk4vZEJxL1BLYkZWM29POXZMYTRrL3EwRk56dVJNUFlPWHpGMFBVWjkrV0x6b0NyYVgxUkw0bW1aMUQ0cUJnSFdTMDFpQ3pUalFYaUJ0Wlpzc21LWHZBSlA2RHBpclpKUzB3R3JEc3ZTOFdZNU5oOXQ2alpTYzlNR3YzL3ZxYjAvbDNmekVZYko5cFBCUU81VHFraDNNMDIyYzQ4cW1OL0RxTGZVR2Z5OWxuZWxwRDRJOWlkVDFuRVN5WXo3YVdmbm91SWE3TWhiQVlTNHA3Qnd3bWFGeE9IOTNqK25DR1lXcWh3TFFWbjdzWTA4ZlNSRTBiQXF2YVNGZ01URWd0VVJzREdCYlNucWc3UG9CSTdYRWc4TE1mYkNBTlBWOE1iNkhHOEovcko3eHlDREFzVDU2T1BvRG5rMnZqOTJ5UnR0Zk1vdmpsNzRMQlpOMTliUWRLUzZKNHZLM3VNMEdsRm9iL0xqcHBhejFnY2t2TER1VnpLZElWWU1wTys4Vkh1dDdDWjNjZVYwNDd3MElrQ2k1N2F0bDFnc3NBNVMwMm1PVEtEazNMRmxsSDFNZmMwWDVBMWNYQzVLdWRMT3FMTk45eHltUDlnL3d6SU1kd0tHR3hKNDZiZGIwVVFNUlM2MUN0R1VJUVgrWGlJM1FtSVBVNVF3U1V6SU4wa09GNldOSDcvTTFYcDh2di9mSjArdnByOThmYTZqdTdFRWpCclVWOWhqR1JEb2laWXpta0c0WnBFL0c2akJMdjRQM2l1dDJWdnhFUzdZYVhCc0dZRVNSZHFQYSsyUkFNallmTVJYQ1pvWnAxUkdNdmxIM3NOUlh2K0oxaDBvQ1Y5Nm05bHlHeEY2Y2IySkxaWnNhRUVmTEp3OUF1ZkdrU2wwZ2VkMEt3V0Z4MnpyQ1JrRm9zSDRSUVU5TmlXMlNmMUdFTWkxeEJwNjFEWVJuMWN3RE14RDVicVNmZ0FhQTg1QjFEcGRnQ1d5WFlLdFRwbFAxc1kyN0F3bFhWOEVqdzNqSk9jeHQ1cUlIYkRWSkNrdlc0NG5rLzFGdTJIWHZvelliQWV3dHorVU1Oem5pMklweDRab2Q4bHFLWGY5aUVweDRYdWlIYzl4Szlpb3l4TVpDSzJBeHp1TG9FR2o2UW1STUhiSGhpc2F2S0RGTy81eVRhdlh0ZjQ0K1FDWVlxQi84YXl3REFBL1ArTDl4SUVTWTVnenRtRWwyK2l6RHB6NTVrYUsxN0F5Rk83b3dOUzJmblExNGZ3SEdqc3lJNEhFeVliVDMzTEg3ZnFpWGVZQzBiQi9XNlVFYktaMXN6Tk5LR01IQ1J1VnBZSkxoTTBIdjZqUlptems5TUN3S3pVVlBBaDhBeFJxTUZrVGNpc3ZLdFNacEE2bFBRNnNhV3UzalRlaE1jbVlXN1ZGbk42cEpzTVF2WXlWNHgyQVdnWWpFb05FeXExWFVsYkxKSHNEaEI1aUh4MmZyQm5rOW5ZekhUWTV4TkpJeWFpY3JPSk5id2lIb3NNODdwd3E5K2xoYW1lYzNJZUNyMFozc04vZ1pJRjYxRnpjYUdRRHp6T3BjSGR6WkVsc2lIcDV2UTk0WGdodVp5TUhsVFlHU0w3bWU1QmNGT2lDaC9CSE9Wa1BmN3k0REZXZFA0TzBPZmxINzB1cTBHSzVxSFdmNFEyMkdaN05GU1JZcXRuckVWcnVwMUxsVFN0a3dUdFJnWitXUUllZkhFUXE5SFBkSkRLT3FSTkYxOVR1UjMzNXd1di9zTGI5c2hpK1ZOTUVWK25vY2tNbUMxWm1Gb1VacWhNTmVCR0VYdUp2REY0V2RvekNJMVB5ZHRPQXlIekRMWnBZcXdhSDVZclBETTJkaWNHU1FlbDljanQrQ0NvS2YyWWhnYzNSQmVuRTRiQXVBYWk0ZkVtdlFxMmtWM2FVMVJpaVU1NjJWcHY0bUx2OE9Va2tQN3ZWVmxwUFpvcktNYkFrQU9KSi9SQVM4c2VDMjhMdG9aanFsNDN5WisrSkxrWENwVHhiKzE3L3lPdWZyZnhRTzRiSjhrMnFHdjZqRkhqY3F6Sk9hM0hBVmIwMU5jOTNTQWEvSEd4TFVIMjJTNVo4ZGFCQlMvYStpdEZQUHN0RWdoajlMUERsemVGV0V1UEVOaU1wYjBjUGxNSDZ3M1QzM0ZtaUp2UGluUE9MZzhjZ0VjTmlwKzBCRUttL1NnSkFHd1dCSkt1VFdRRlorMWhTWXUxYTRxanp0VEs4Slh5K1BTUzQ0TVdoV2kxd2d5QW95QlZzQ1ZvcC9pSHpPTHVHSzA1dzJ5c3FGM1dKZ2U4K0ozcmRWZmQwcWZROUNBbEptUnNCclBXVVI0cmVXbEdvd2FkcFNFR212cHBGajVMSVY4OXRITFVrcWVKY29Fai9TNWdxMjhVZkNRdVJ4Y29ibGFldzEweG1zV2ZudlJPa0lqYmpCbExDM2h5c1VLbkZoYlJ3eHVaVkxTUFNIOXpVMnpOWmQrb1FOMXVBUkUzWkx3MVcreVVtVHFHR0VPR2l6dEtnZWhNQm1GUDNXYk8vZ3g2UllDTHVaMTVCUzJFUDdlY1dGdDFGOS9CU1l6b0VsbE5IMnR5Y01qZTZ3N3JUK3FaV2FOZWRmZUFsZnNPN1dXZlNhTDJjd1VaVEVTRnF3WlhpMUxkSnVDL3pDSjFxZWl6YkJvd0Vwd29kemo5Y1RxTnEzMlpwQVJPeU1hdUVJN0tUUFZOWUhGS3FDNkVrU3Y5am0rVDZaVDVQV1oyamtNTmpCRWcvNHU0NVFzeHBDb0E0c21pY2dPRldUQUMvZUQxaUxxTUMwZk9ZQ3locGxPcmRjbHVUNXJobGdycVpuVGJ3bUF6dlN1RTZxN1RmTVZCUlpmenhBNHVpY2EySXJGV3ZkRENuYWF0V0FvRmZLcHVZcXQwb1pncHNpdytJbFd4QVRYK2ZUUkJUMEFGdUoraEVOTzI2ZmVzbU5LOHpRNkRKS2N5RjUra2tVMUFUcDcwNjNXWUsxMDViVnpGZGQzdnFjMzlpTEF1cURQRVZMWFBGdWVpYWh5OGhueUNMSTR0VGpLa0Z4Z083ajlXZzBndUozRmFGbndTYmJwOGt1clQrcTFhQitQVm11QVcwR20vbHlDQ3dla045UVJVMGtDNGVkQTROQjd5ejR1WTYzaDVLdjJFZ0dmRDBJZ3k3MEhYTkVGQWVieW4xVlBwQU1mNElxcFpHMlZtN1FnV3RCRFIwaUo4N25TVGR4d2VCK3pobmpkQ0JaNXptY1BxYng0REZrOVFNYTJaQ3hraUJ3djZ2WFVWR1FwMlVmTzlHWUc2UnJPenJwQ1l1Mm42cGF0WWRGYmU2S1c2YSt6UWRGQkZObW5QcnRia0YwMFNsREJUMnNNcnBaR1d3ZU1kekpTTEc5amxzVks2R2RSeEpPVkhJeW9NVTY5cGN3Rm5SVVBtanBpTGdPUk1aWjNuSjZDeVZqdWNlWUM4eGpROUdFR0JKT1FoNThuaGo4MVZacW1jZENsdGFUVjJUN2pVNnVDeVJSTTY5eEdwYkxlZEZoZ3FHMVU1Q2V3NUpnak04UkFZd01XSVdLZ0pYT2toWUVRRmNDTVJ5T243c3F2cnJhZVhnV0FQdU9UM2pMalZBTVhON0Juc3lJQjNPQkZtYzdEZVZ6YzlNRTB5OVRiVU1OaGdra0VmYnJ6a28yQ3BaSzFORk1Fc0l6NUVseG1SWnhZV3p5ZlBxYUFkM0FWc0tKWVRldUJIaGQrSW1iZ2ZvakV4VUNZMlNGQ1g5NDRaQ1ZtUUIyQW5PTVlINWNVZkxFaEJLN2Rhd1hNMVU3b0ZLWnJUYWdua2Q0VzdBWTFMSWcvOW8yMWtFaXRoV3NSbGdiRGJRdzZyUXdIcnpBcmY2MEp2SXBvSEZGK2VlNEkrNmd3RzR2RklMeTJzQ3BlVUV1b01HM2ZRYUxoa3AwUG9zUHNjeER4MmZmbElaUlR6U0RvQ1M0SytnWXVBNUVMK2xQOGJHRVJuaFhLSVg2YzZYTlYyNHlEQW1HUzJHaXN4WWRLNllscVBSSkN0RUxoTEdnRGRNMWdIZXpGOFpHWFJYYkZxMmt2OU05eTRBa2l5U2xyUUoyZ0FLQ3g0L3k4ZUd4dDZwdnhtaG10ZW14Qmlaazl4bFBZZWlJVFRZNEFreVF0NmI5aEZ3NHdQS2VwZGNyeVpzZFBqd1pxbUtvV3k0eFJRTWV5RHhrck95STQvWXlzWmJPeFE3OTE1bkp3QldOMWNBRXd5VjY4WXdpNENtOGFDZ0VENkt5Nm1uM1JrWnI0VDkwZndCSm15OVdLQjRnMmpxb0NPY1BlQm13cHdIV1htZVRKUU5hcHhwYXlYQk9pb0o4ODdOZXNxOFo3eFgzS1ZvR1J6cXl1Mi9qOVBGNWRyc0Jld3cxRks2OVp3UVFqUlo4eDJYZG1lMkNKVWZzNnVhRnpVTHlCVVA0MWgxNXNET290WFVPQ05vUjdYYWR3N2wxdjNRSVhkWmVYZmtSalVYT2xvTXp6amVPanp5VURSdDJrT0FoTEo4N1VhNUdnS1QzM2ZFMDlMZG5KREpzN1VHMXdBNENJdnlSUktNRkloc2ozeUZLVldVWlpKLzdPa05lWWtrRVdwQ1FNUnpaVTBvdFFHbWNobjJ3TTF0aU8raTZ2U1ZHZEF2bjY5WWNBbVMyQnBWODRiUWlPdzRhMVRNTlZBK0dtVXdLQWNnUFZ3YmtGRi9RUzdRaGpLbDg5RUdIU3M2M0lHcDFjQkV5SkVYME5GNXZ2elduN2pqRzQ5V1M1SUMwQjNHaHJya20yT0FiNy9CSkNPc00xMENpTDdVS2FBaXBIc3pSVXNoVllqR0JvK2d5Q3E1bXZRRDkzR1RsU0pFaGtGSlZXZGN4eFFVbEllV2E3MThpSXZsUjRXUzIrM01MdmZuTTZmZnZWZW1HMG5FVHJJVU1rKy9Ialo0bDUwV1hJREZQTWsvbk1YKzJhUzhDRmREbkJsVFpFM0ZyUlA4OEZSeURTY1VJNkQ3R0UvdUNXS3hhQzJ6MFNMMW10cS9nV0xoZUJ2M3RoQXpKakNCNUtxejNXdGp2ZHBJekNiaDRQYmJhdmltaXBwV29KQVdHN0JEWnFrNEtZQk5hV1NVY3RWTzVFWmJPNDQ0dWcvRHdCZEgvcmw5K2RUcjlRZ0hIRkdCSHZ2TmtCT3JKV204UkJoOTZFZTRaR3NCdkJadmdyY0YwLzFqb1EwRjBHS0lESUJMQjFQVEFjMkIySFoyYnB6WVR6QTlnWUtqUGV4ZG1Uc1lxZ0tpc013QXBZS2ZESlRpT0U5cnBSQVVTaHZBeUFiOGFzYlIxOFpZMWwwQVVnTlc3VWFQRW1NY1B3MXRoT0FXYTRwQ0VyOThGa3NzZzJDYkM0Vm5sT0IzcUFXd2NGMUYxMC9XZStqVENwb1QvWlM5dHpZazVrUkJhWkhaU0NubjFlOWROdGlMUXhKcmpjMUFPZ2FEOGdMT2FqN3VETzI4R1pYbXE0d1pVVlNkVk0wMEJlK0ZuVVdzQktnZzZiOUdYRTUvYzBBZGZaS2JKVlNiL3piUXoxQ0tGTjkvQ3pDajUxTWFpeEFNeGt1QVFNd0NWb2pqRWt6RGhwcE1DZEFNM3g3eXcxUTZWNmZ2NGVTR2ZlQkNvVldvaTB6L3k1YjAvWDc3Q0NvaDBicXlBS01vcjhCSmY2WVByVXN0QlhEc0pEY0ozSVhQUzNBRElnUEoxNHJyOUYwMVRHMWwzNmJrMmxFVW9VeGpITGRwb1ZhcGRFZTcwWUR6dGtCRmk4TUlYYVRmWVN6ZEtIazZKYUFERUJJaGxrTXNSR096bktxNjlTQ0VTQUx1RDFqQk1veVpER1VJZmF1c05TVDR5Nm8rMm5yTDY4VUFwNGkwYS8vNHQ0UXAySGRpMXVseEdiSytZNHdLVFJNTm1KckFYdC9BaTR2UE9CR2d2cksyUU5VVG9lWm5aWUdpeUd1SzBCQVZEWjYrRXM3Si8zTXovamU4SEZUSmJ6dmpIeGdXeUR3VWk3YUxFTGp4bTZkbTlDdjhSQVQxdUJjdWFBYVlReEdSWXJWRW40Qk5zWFExVm1tdUZQd29NazZ2Q0JnRDRGbDI4dkFONmNtOXROLzd3MU5KcXBtZUk1SGY1TXFuTGFtV1NKQzdoRWI5bDNvMlhuOVhURzFMTHo5V091VnBQZ1V2YUMxd1dnZTljcEx5QnVKWC9HcEk0NTNqZktKRENLM2RqVFZVSzhnMmkvVm1yc1owRG44RTlCSllUUU1jREdnSFBNeEczUHo4NmxteVFzVnFsb2dMSDVaZXQ3eFhDVkhhcXVTdkJ0N2hvOXB4bEdhYnhsK0plTmZTcWhBWXp0UWlnZHBWV2tEd2xOb2IvSkZHMTh5VnJHSFBET0Nsd1dGbUV6T0N2UTA4SlBaaDEwQmhxNENDSnRBQ1RJdkI5dGdDdnhBUUFSQXlMa1p3MnhyRlpCYjk2MGtoQk05SWhlbTh5aEliUU5rQ3hEb0k1WXF6RldTcEFKR2JVTmRWVFRjN0ttUmVvc0JXWGVxQmIyQkh4ZzVBYXVjWTVaemhLaFB5OURnV3U4ODhzUHArdnZmZHM2bG1pcTZxenVYTlNrc1ZhNS9BNHVGOU9INEJJZmkxWURNa1kvZDhrUWM3REJDRTFIRVd3ZUE3VTBKQ0JMd0JXN0pBaWJIdDkxcTY0MXgvV0J4L1JtNVZZL1lCdytIM0xIQU5Rc1c2TzBaL3BJd0RvdytqN1hETlhmQnloMjI2YStNdTJHU2tDbWl2M1VPRVR0Wi9MeHpuWUJpWngrLzNkTy9oVGdyTmYxQlh4VGsyVVB2a3c3TTJlZVl0N0FaUVlxa29EQlhIdHcrZm1ua0dkN0RVTDFFV3VsVHRCbi9RQm9aS2lNb1VOWGlSMVI1Q1NaS2ZaTlIzc21FWHBrTTRJbVFVRElKaFF3c2h6c1VpM0ZiMUF4NVdYSlo0S05TdWNrMDNTL3ZiT2NNaGZQaWQ1WlRoSWZMRVpCRDBZamVEcEx3bjFvSWJTQVBkRjMvZmI1ZFBwbnY4MFRYV2NYMllCUTBFdE5FcUJ5Y0ZrWCtVMXcyVDZ5eEFPejFBdlZza0x6cm9WWjFweGZWbTRXSVU5bWF2NFdUczhpRGM0QUFDQUFTVVJCVk1tdENXRzgrRk5lQTFrNXRLZkdXakpMM1ZOUEtHc1FjTEdQbkc3WkJRMVJCNXlZbEFGQVFpNHR3Qnk3Q24reURWQWJMRVIwUWNUcmF5eU1jeE1CSDRKRm9WN3RraEYrQ3pFd1YzUEZSMFgyNlhUNjU3NEpjVS9RMG9wd0FvQVkyb1ZFNkMxblh6cjgzdjkxUGIyZUtlaE5jNUdoYUp5NkV3K1ErUmhadVVLWWlMYzM2NTc1REVWOGhxQWIxb09RV2dKSUtqN0xBcFVFV2hQem90WDlNa0h2dFN2ZXREKy90V3VPZE52OVhQcDdpNmMweGtOWm81aXFRT1BXUWh2NDhpN1ZkbWhoVWJOU3R6ZUtIbjFmYkhiY0NYdGxYNVVBQ2N4eE1FSmgxKytlVHVjLy8wMWRQZzBIRmc3dFB3VVhhNGhzT2dSN3hTSy9jZUVUWE9mWDY4ZGtLTy9IQWtDOEtWQUJKbFlDQnFPMFVpeU1rZUJCZUl2alpFaU00Mncxd28yZ2o0MDBGRTQwYVNkR3ZGZi9qOXR2TXdBVGZMdy9DSVQydmpKSncxNjNDMm9mZ2s4VDVReHRhaE1NU3lOWWFKTTl3dk5xNFZZMTNyZ1JlQXo2aytlUzRYdzh5cm13QlVIMisxLzc1RjY1bU1GYXpqbzZ2VitFUEZncXhmd2h1TUJVT2Q4UXQwcE96N2Q5R25NbFUrQTRDSjdXdEFlRzA1QXBZRXN3YURqRWpoTVQyc21xUUdtZ1M2ajJpOElySzUrTEkxZGZxdDZjVERJSHFmU1U3SU9NZ0kzSlV2b04xazlQeHFuQnJ0ZW1pQWZXRXVQb2EwMGNWQmxvWk0wQy9rVkhOdVk2S3FpZVQ2ZGZQcDlPdndQZlM2OGZXU3pYamdDNHdGcXV0MmhWdUEweG1PdHlSVmdFVTFIQSs5RGhDdGhudkw2SU1NejVpQVMyLzBUR3dSQlc3M1ZoWDB3aklVMlR3QUcwM2dNR1FDWGp0YjNGeWRGNXhrV2FKTllEWUd5a0xOSHYrbnBmWDE4MDAyQW83alBhc25aWnBPZytqcm1XaW1LNWlrWFg1ZDZhcUo4RjZ3SlIxaXE1NEhCQ2QveGl5em44K2EveXVaa3gwS05URlV3VmZmVnN4Y0hBWlVmclBYQVJWRElYMGNGcFJ5cG1xWUlwd0ZVRHI2Wm9XUlhUY2NjblJtak1HMmZEVXN5WTFiMXZsMG1vYjRtTVFUd0JKcjVKaFV4SGZsenp6aTRZV3RVM3VVdjB5UStCWFl0STE1NGN5SmtjNkVyVUhlUzIzZXlHOVhaNVAvWitFRlU2a25nczJXVmIybk1ITU52ZG43TUdRL2JqWTBDMTlwamdDZ2xrQU11UW1FRGNhUzVtZ3RSWjJMZXpHRW91REluUkVWRkRwd3hGSGdtbkYzcUxOVVhjREFTbGdvZzNpcXFuQk5Kb3phR0drMFBvYWVHTUdnUXZ2akFGK0liQ1NvUjNNUGh3eXZZZVNnbldMR3AzcG1GREFodWI4M3N0RzF3eVQrZ3ZDYmRrMC9UWk9IK1hYS3ZIUTZ6dEVwT0R0dTRGWXhZV3Y0MEp1L2xmZ292aEVIcFlMUWlDVHNKWUYvUUVGeGNVeWZVZ0VOTGdkZG1BK2pwY1k4Q3l0Sk92cTRnWERaYTlnQUxPM1d0QTZkSWcySUMyY0ZOY2sxRkFiN2VDYXBDNUduVFRMcnk4cXFJMEc5Unc1eXZoVjd2Tk1HeUR2YnB3YjhZc1FweUdabUlrZFJkNjBXeXh4OHdpYmNmemZNWU5rMTBaT3kwdzBXVWxvVi93a1RTU2Jyc200alF6akQxV3ZmSHYxNUNJaTM4QUxnRU9pK2JwYjhXWmFDOVhXZ1dwNVJnY2k3VVl3cWdObHlkbEpHQjZieGZaYkM3QjFDQzF3VmNkQWE3ZUFqYjFtYnJNbDREVGJ1Qml1eEtoeFhJUnBaSnB5SkRDSnBXc2lhQlAzU1MyaGVvc2ozQUVMZGlPNE9LWEs3aG1GVUpZekgvVmEzVUV0dCt6NWREbFRYNUdNc0ZtbkJKWUJOa0VWd3A2MTFxM3dZVm9sek9sOCs4bTV0Vis2STlmSVhNR3cvUzZZNFZHRUpEVUc1bW10cy92dE1OY0hicnd0V3lkZ0pudnRKNzJUWGpNQVkzMzVuNzY5REw2VzFyK0dmYkQ5TGZFN1hkdytSY0FnSzY1b0tzRUxEbnRyUWczZXNrR3M3VitONFoxUGYvdm5uMXQzRjV3TEhieUlVRjJtRmtpczBYL3JyaVR5MFJsdHZnb3VHQ01Kck0wSDZzNkhyckhoZGQzVm9LR1dCN2dZT1hVWWhzV1V0dCtGeWhqbDZNaG4remk0OWFuZS9sTEEwQXlaZ3VqTlJkZi9DaTFCV2hMRUl5dGlWREJzMk91Q1M3U0pFOFczYW9ONkZ5MktWbjB3SWFZSlE5Ly9wUE5HaEttd3gwZE9scktQUm9TeVRLM3dtS3Q0ckFwKzZUYlhvdmY4dnRpMzR5TkFZWFVaZ25HNGZBUFpzb2tRY0dtKzhYdnNkN0VEa2FBNEFEU2ZzdTZYVHZ6Y0hwK2I4eExNQkIwTS9TQnd6SlVTcGowUWZlbE40cnBkSEt1QWkxZGVQbDgyaGtnbEFRelQyeE9ZK1BmSTJUdWlKNFJKTit6a1BoTlRFbkwvNkJuWEo2d2ptaHZMaUd4R0dHcnVSSmNhVitFVlYzVEI2c1BIaVFJMzB4V1cxYnJBOWxHNjNxUWNPaDQ5UE9RRnB5U05mVzZnR3dMRnYvT1BUdmw5Z08wYXpoakRGV0ZGSytwUkhFQWdVMlNpWkxhU2ovcGRncXVBRnYzdmpMc2tibnVnYXRSNmRpWFRrUnhZbjVBemZObXRmdjJHM3YyWlA5TXp0VGl3OW5KVkpwTlNpWjFESzRjaEJvdURsc1ZvR01qYmJlWmt5dTh6eDVoamd6SHpDMVd0NGtUY1A5TUhYNkNTNWtOMzFWZ1ZJRWFSOWRBTjRDa2Q2MXV0d0JNUWsxOHBrTG1BakN5MSt4K3lJWGtaRjVqbTJoUjRKckY5QjF6OFRYL3lSQW9yS1hnVCsyMVliVkQ1b3FCckxmdCtVLytIQ1RVc2pHR09URjNlRnJCTGhnQjdHWVBMcVowbklTQksrckR4LzRzWHdVcDBGQmhzWmVHMURpVmFCbWhNNWV0akJSbTJob1VoVzFsYUlLTEVkR3hxZlA2QjdoSVFnMVZ1Q0hrTlpYclJ3Sy9nd3EyNXBBd0VRNFI5Z1JJeW5EKzhGQUNjaWtOcVFrckRyczlFeEw3WHNBVnFDdG1GVkQ3d0lBNkgrQ3RBb2Z0elJiL2MxRXZGd29BcXBhY05DMXJkdlJONXJKcXR0eTV6and4L3RsUkd0OFIxbitCb2svT1lHdXptcDBFZHpCV0FWRVpKOEJmZDFCK040SEMyTzkvQTFoa3FIa0ZHeFBLUGllRnlUVnN6dmRpbXNvZ0NxT2xNNzRCbHpQS0ZPalVYUUt1cUZiSkJJM3h6TWpLR0VPM0pkdE5xNEg3RkdBcHE5MWtMcjMyRmhMOUNTcUNYSVpERHBoOVJ3dUp0NWdMekpCY2NBNmdGZHRWczEreWxRKzJtS3pDYmpIOG5aWFkrRS9EbFNkTFVMV3dwdG1pQTN5V2pycSt5a2tidVJQY0dPMUxEdk9BTWtCekJDaStZNGN6STJTNDNJSEx3NG1DUjYwRkJWZldGRjBiMU95ZlcrRGFySlRqeDdlc1RWR3dTbmtJb3ZBVG1oZGJ3V1VhelZZNzRsUkNzaTF2ZkJxZGFWem0zWjlYcjRWRjZxVWNNbU14T1lZQVNvVVY3OGJnTEI2YXJNSXNBY0RlTnBOTU43eW91ZVFTVDV6bnZ5ekpOTFBCZHFFR1M0Mkx1THVtZW5jbkFXSkVvQW9EWGhxQ29NV2Fackx4d0JmVVNqajdjTWxXRzRhNkJxNG05aTBzWXRFNEsyYnZ3S1hoY0NRYlpNOFc0dlNHMHd0Q0pySHp4SUxMQkZoN0tQeU90ZXd6R2ZiRTV6ci85UHFSK21ZUExySVl3TVV3U1RaaC9aRWhTb0NWckNRbEhvWklOVWJ6WnBLVFBRSlZnVzdHdUxvYmprQjA5UG9Dc0x6ZERSd1JaM2Jnb3VqbCs3ZkFaZHVtM3pYQ29vTUwzbEt4WHFDNWdjdWU0T0dISTJyUmdORG1ZZ3ByaFJnOC9tOG0yR1FBQVZkK25nUEgwQlhoaWJUVjJMQ1lhNEtMQmVkTUFzaGlCK0NhTEtYZ1VqYkRuYUhIcHZxcmNZNllwYnloY2tGZVVEZ25WMnlLaVlmTWZ4UVJWbkNwMUovZ0Vxc2lOUnNFK1lhNWtyc093UVZ3SElHclpaOVlkWkJqS2hyTThlYnNLY2UrYXhLY1VGT0FFVnlZWXNnbEhCeGczSTRNUmJBaDI5ZFEreGk0YkVjNTgwZmQ5d2lUczdZWTR5NzZqR3dHd0RLMFo0RGRnQ2pkK0JIS2E3Vm5Rb1RUTkFaa2xQMDI5K3hEb2ZFR2N3VVFaOVpZMlo1ZjVGd2dMcURGM2RuUFdKUlhhNHoxdmpNUXV5YmdzbFBFczZuUjdZYkFlKzlrWldrb2diZDBiKzhaTEVPSkNGMHVDOCs3VGgzL3p3TlhHYVUrRUE2dU1aT0hMQ1EvaTVIRzV6TnJGWEE2cFFKaXVORUkxQ1JhQ2JOeEJKT0I3WHRtdml6WGIxY3FxbDBzRjVwN1VoMmxqRlloY0E4dXZ1OWg2MHVDUzFZeWREeHhvR1ZoNEVnaWV0KzlIN3ZjSkhzVmo4dVFSaVp1VkhkOThSNUFIT0ZBTHFwOVpzTmFQclNjb0xGb0xsRGpLMmRMeThJaldTKzA3M0JXMDFBcG5JTUZSeXFrZFdEbEV1RmxUQ3dKek9wL3lSTGpOOW1wY3hPUFFkRjBrNzBrMUFrSnBLazRtU3NCcUZhQXpPQkpOeDc3dmNsYzJqL3ZIa1dKK0Z3RFA4VWZNMXFzWk00SnRVdzhlbll5YnFaeEJTWjdLZFVHM2NyRFZpWFRPeWpEN2NIRmpGQzhMYnNyUGlFOHVvY0ZFOVUzMVM0S2hqNldHSnQ5TUFyYTZtY0JWc0ZDQXhpTnZYcUpwNEM3WS91eEgrNzZUc2pVYTZwS3VML2VtZXV0NEFxUUFCalVZUUlFZXFQY3Bucng0M09oclFwWXVVWVl3WlhhRFVlMlh0WTlmMWNaSnQ3WERFWUwyVHVOTm9aZ0R5NkNhRXdKczhtMG1iMnhNMVZvTVMwUHRTdGE5MFNxTE13WXIxR3VmbnhlWVhtUGw2R0JRc285TjBKZm5hOTRYbnFIYnV3ZVA0TFpTanl1c3pKWGhrSU1obzg3d2lKMkJjYXJiRE0wVklFcnRkVG9ib2h0N01FSjRwc05LMktLZUdhY2NUaFpvTlJMc2ErVGVTd2JGN3ViZVBGbXUzN0hGLzhZWEhUaDRYS2Jzc24xdU1CT0laY3FKTVpmZmRKcTFSYjdvbTd4MGJIWUNPNnVGVloxTFNwTWpscmlXd0VtRjJtR3gwZkJsUURUOFJNMjJYVTZjS3dlQWhlOXJ2UFpsazJyQkVDZm91YjZDeVJERTFaWUtoNEJ1R1AxRFVnVU9GTEVUaTJnN0xlSzMrVkxGbkNGNFU2R3FYbUlDUzRBaXAwV1doY012R2huUFJhSWt3TlJMZWczZ0x5Z3M0eXlMRERJVzdWVHN5VjYxZWpnYWdMKzgyTHJ3eGJ3U1IwdzdreHNwYW9QSWg1VklpQWFhREtUc04rN3dXVjFSaFhYQ2E0eGhjMHZsQzFMZnVOU0tGT3BhNTNNaElGTEswT1dOcUtadDI5QzhTL2RnS3ZhWHFKK1dKMnBWY3FSc3RCZ3FnUU16a21aYXpKYm5zUElHSk1QbFJubEdwWE9XanNoRHJSbHU4SngzUWRmYVIxeXNNRk5jT25UenhpRzBpRlFvTUdPU0tHTlp3Uko3VEdkZWdyNnRDcDAyd0V1elJCbGJWWS9acTFCM3NLWW1xQUVuTjdGZ2RQdXhCNWtpUG8xQWE1LzRWY3Y1OWR3NkoxNXNoNU01Z28yY25CQlk5a2dGbWhuVjBQL3U1WURyMHh5TXRoaVNmQW9Od0RyalB6bEFPYjd4VWs5ekZ6aitZNDlGS3FtMm9PckpBMGYzd0xHb2NZQ3dOaGs2S1VmR2VqNCt1NmhNWXdwMDk3a3I4bFUvSHZlcVdTd29WbVA5cjJBeStmNFQzQWhHK3hGYU9tZTJNMEVrZ1Bic2hmb3FjNExtYVNFTEFWUnV2Z3pUT0pPbUxycEhvUGw5b1BCaU9VY2RIVzY1ZGdxRFBhbXdxbXpza...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.041888297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.11319814,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.041888297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.041888297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.041888297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"bounds":{"left":0.0,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.08294548,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.30247405,"width":0.02144282,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.08610372,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.367917,"width":0.042719416,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.38946527,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.40063846,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.42218676,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.43335995,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Formalize","depth":4,"bounds":{"left":0.0,"top":0.45490822,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Formalize","depth":5,"bounds":{"left":0.013297873,"top":0.4660814,"width":0.016788565,"height":0.010774142},"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.48762968,"width":0.07962101,"height":0.032721467},"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.013297873,"top":0.49880287,"width":0.09524601,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Search results: calendar | Jiminny Help Center","depth":4,"bounds":{"left":0.0,"top":0.5203512,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search results: calendar | Jiminny Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.53152436,"width":0.080119684,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.55307263,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.5642458,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.5857941,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.5969673,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.59297687,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Edit - Calendar - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.61851555,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Edit - Calendar - Engineering - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.62968874,"width":0.07413564,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.6528332,"width":0.07413564,"height":0.025538707},"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.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-18909-automated-reports-ask-jiminny ■ 874522","depth":9,"bounds":{"left":0.08028591,"top":0.9860335,"width":0.10056516,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"75","depth":12,"bounds":{"left":0.08228058,"top":0.91380686,"width":0.015957447,"height":0.035115723},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"75","depth":14,"bounds":{"left":0.09059176,"top":0.9173983,"width":0.004654255,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"AI Reports","depth":13,"bounds":{"left":0.10887633,"top":0.06943336,"width":0.031416222,"height":0.019553073},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Reports","depth":14,"bounds":{"left":0.10887633,"top":0.06943336,"width":0.031416222,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Ask Jiminny reports","depth":13,"bounds":{"left":0.62682843,"top":0.06464485,"width":0.059341755,"height":0.028731046},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Jiminny reports","depth":14,"bounds":{"left":0.64045876,"top":0.07222666,"width":0.04105718,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Report name","depth":17,"bounds":{"left":0.12167553,"top":0.10933759,"width":0.058011968,"height":0.019952115},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Period","depth":20,"bounds":{"left":0.19963431,"top":0.114924185,"width":0.012799202,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Exec Summary × Loss Analysis × Product Feedback × Coaching Profiles × Report Type","depth":16,"bounds":{"left":0.26944813,"top":0.10933759,"width":0.06615692,"height":0.07182761},"value":"Exec Summary × Loss Analysis × Product Feedback × Coaching Profiles × Report Type","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Exec Summary","depth":20,"bounds":{"left":0.27177528,"top":0.11691939,"width":0.03025266,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"×","depth":21,"bounds":{"left":0.30435506,"top":0.11652035,"width":0.0028257978,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Loss Analysis","depth":20,"bounds":{"left":0.27177528,"top":0.1376696,"width":0.027426861,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"×","depth":21,"bounds":{"left":0.30152926,"top":0.13727055,"width":0.0026595744,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Product Feedback","depth":20,"bounds":{"left":0.27177528,"top":0.15841979,"width":0.03756649,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"×","depth":21,"bounds":{"left":0.31166887,"top":0.15802075,"width":0.0026595744,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Coaching Profiles","depth":20,"bounds":{"left":0.27177528,"top":0.17917,"width":0.036402926,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"×","depth":21,"bounds":{"left":0.31050533,"top":0.17877094,"width":0.0028257978,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Report Type","depth":18,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Clear all","depth":13,"bounds":{"left":0.34192154,"top":0.112529926,"width":0.028424202,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"NAME","depth":16,"bounds":{"left":0.10854388,"top":0.21707901,"width":0.012965426,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FREQUENCY","depth":16,"bounds":{"left":0.35854387,"top":0.21707901,"width":0.026263298,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SHARED","depth":16,"bounds":{"left":0.4418218,"top":0.21707901,"width":0.017453458,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DATE","depth":16,"bounds":{"left":0.52509975,"top":0.21707901,"width":0.011136968,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ACTIONS","depth":16,"bounds":{"left":0.6085439,"top":0.21707901,"width":0.019115692,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"No reports have been created yet","depth":13,"bounds":{"left":0.33976063,"top":0.35554668,"width":0.1171875,"height":0.023543496},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open Intercom Messenger","depth":7,"bounds":{"left":0.6715425,"top":0.94573027,"width":0.015957447,"height":0.03830806},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextField","text":"Search HTML","depth":16,"bounds":{"left":0.6944814,"top":0.07581804,"width":0.28324467,"height":0.017557861},"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Create New Node","depth":15,"bounds":{"left":0.9807181,"top":0.07581804,"width":0.008643617,"height":0.017557861},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Grab a color from the page (Cmd+Shift+Y)","depth":15,"bounds":{"left":0.9900266,"top":0.07581804,"width":0.008643617,"height":0.017557861},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"<!DOCTYPE html>","depth":21,"bounds":{"left":0.69980055,"top":0.096169196,"width":0.032912236,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"<","depth":20,"bounds":{"left":0.69980055,"top":0.108938545,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"html","depth":21,"bounds":{"left":0.70196146,"top":0.108938545,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"lang=\"en\"","depth":20,"bounds":{"left":0.71293217,"top":0.108938545,"width":0.019780586,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lang","depth":21,"bounds":{"left":0.71293217,"top":0.108938545,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=\"","depth":21,"bounds":{"left":0.72174203,"top":0.108938545,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"en","depth":21,"bounds":{"left":0.72606385,"top":0.108938545,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"","depth":21,"bounds":{"left":0.73055184,"top":0.108938545,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"style=\"--asset-image-logo-short-100: \"data:image/svg+xml;base64,PHN…F3akpRQUFBQUJKUlU1RXJrSmdnZz09Ii8+CjwvZGVmcz4KPC9zdmc+Cg==\";\"","depth":20,"bounds":{"left":0.69980055,"top":0.108938545,"width":0.1846742,"height":0.021947326},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"style","depth":21,"bounds":{"left":0.73487365,"top":0.108938545,"width":0.011136968,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=\"","depth":21,"bounds":{"left":0.74601066,"top":0.108938545,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--asset-image-logo-short-100: \"data:image/svg+xml;base64,PHN…F3akpRQUFBQUJKUlU1RXJrSmdnZz09Ii8+CjwvZGVmcz4KPC9zdmc+Cg==\";","depth":21,"bounds":{"left":0.69980055,"top":0.108938545,"width":0.1846742,"height":0.021947326},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"","depth":21,"bounds":{"left":0.8317819,"top":0.12011173,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New attribute","depth":20,"bounds":{"left":0.83394283,"top":0.12011173,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":">","depth":20,"bounds":{"left":0.83394283,"top":0.12011173,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"event","depth":20,"bounds":{"left":0.83776593,"top":0.12051077,"width":0.011635638,"height":0.009577015},"help_text":"Click to show event listeners for this element","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"<","depth":21,"bounds":{"left":0.7034575,"top":0.13288109,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"head","depth":21,"bounds":{"left":0.7056183,"top":0.13288109,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New attribute","depth":21,"bounds":{"left":0.7144282,"top":0.13288109,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":">","depth":21,"bounds":{"left":0.7144282,"top":0.13288109,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"</","depth":21,"bounds":{"left":0.72257316,"top":0.13288109,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"head","depth":21,"bounds":{"left":0.72706115,"top":0.13288109,"width":0.008643617,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":">","depth":21,"bounds":{"left":0.7357048,"top":0.13288109,"width":0.0023271276,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"event","depth":21,"bounds":{"left":0.7396942,"top":0.13328013,"width":0.011635638,"height":0.009577015},"help_text":"Click to show event listeners for this element","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"<","depth":21,"bounds":{"left":0.7034575,"top":0.14565043,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"body","depth":21,"bounds":{"left":0.7056183,"top":0.14565043,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"class=\"fixed-header Frontend pace-done pace-done\"","depth":21,"bounds":{"left":0.7165891,"top":0.14565043,"width":0.10771277,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"class","depth":22,"bounds":{"left":0.7165891,"top":0.14565043,"width":0.010970744,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=\"","depth":22,"bounds":{"left":0.72755986,"top":0.14565043,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"fixed-header Frontend pace-done pace-done","depth":22,"bounds":{"left":0.73204786,"top":0.14565043,"width":0.09009308,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"","depth":22,"bounds":{"left":0.82214093,"top":0.14565043,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New attribute","depth":21,"bounds":{"left":0.82430184,"top":0.14565043,"width":0.0023271276,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":">","depth":21,"bounds":{"left":0.82430184,"top":0.14565043,"width":0.0023271276,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"event","depth":21,"bounds":{"left":0.82829124,"top":0.14604948,"width":0.011635638,"height":0.009577015},"help_text":"Click to show event listeners for this element","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"<","depth":22,"bounds":{"left":0.70711434,"top":0.15841979,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"div","depth":22,"bounds":{"left":0.70927525,"top":0.15841979,"width":0.0066489363,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"class=\"pace pace-inactive pace-inactive\"","depth":22,"bounds":{"left":0.7180851,"top":0.15841979,"width":0.087932184,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"class","depth":23,"bounds":{"left":0.7180851,"top":0.15841979,"width":0.010970744,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=\"","depth":23,"bounds":{"left":0.7290558,"top":0.15841979,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"pace pace-inactive pace-inactive","depth":23,"bounds":{"left":0.73337764,"top":0.15841979,"width":0.07047872,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8038564,"top":0.15841979,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New attribute","depth":22,"bounds":{"left":0.8060173,"top":0.15841979,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":">","depth":22,"bounds":{"left":0.8060173,"top":0.15841979,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"</","depth":22,"bounds":{"left":0.81416225,"top":0.15841979,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"div","depth":22,"bounds":{"left":0.81865025,"top":0.15841979,"width":0.0066489363,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":">","depth":22,"bounds":{"left":0.8252992,"top":0.15841979,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"event","depth":22,"bounds":{"left":0.82912236,"top":0.15881884,"width":0.011635638,"height":0.009577015},"help_text":"Click to show event listeners for this element","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"<","depth":22,"bounds":{"left":0.70711434,"top":0.17118914,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"div","depth":22,"bounds":{"left":0.70927525,"top":0.17118914,"width":0.0066489363,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"id=\"app\"","depth":22,"bounds":{"left":0.7180851,"top":0.17118914,"width":0.01761968,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"id","depth":23,"bounds":{"left":0.7180851,"top":0.17118914,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=\"","depth":23,"bounds":{"left":0.7224069,"top":0.17118914,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":23,"bounds":{"left":0.726895,"top":0.17118914,"width":0.006482713,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.73337764,"top":0.17118914,"width":0.0023271276,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"data-v-app","depth":22,"bounds":{"left":0.7378657,"top":0.17118914,"width":0.021941489,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New attribute","depth":22,"bounds":{"left":0.75980717,"top":0.17118914,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":">","depth":22,"bounds":{"left":0.75980717,"top":0.17118914,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"</","depth":22,"bounds":{"left":0.76795214,"top":0.17118914,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"div","depth":22,"bounds":{"left":0.77244014,"top":0.17118914,"width":0.0066489363,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":">","depth":22,"bounds":{"left":0.7790891,"top":0.17118914,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"event","depth":22,"bounds":{"left":0.78291225,"top":0.17158818,"width":0.011635638,"height":0.009577015},"help_text":"Click to show event listeners for this element","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"<","depth":22,"bounds":{"left":0.70711434,"top":0.1839585,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"div","depth":22,"bounds":{"left":0.70927525,"top":0.1839585,"width":0.0066489363,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"id=\"userpilotContent\"","depth":22,"bounds":{"left":0.7180851,"top":0.1839585,"width":0.046210106,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"id","depth":23,"bounds":{"left":0.7180851,"top":0.1839585,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=\"","depth":23,"bounds":{"left":0.7224069,"top":0.1839585,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"userpilotContent","depth":23,"bounds":{"left":0.726895,"top":0.1839585,"width":0.03507314,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.7619681,"top":0.1839585,"width":0.0023271276,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"key=\"113254367\"","depth":22,"bounds":{"left":0.7664561,"top":0.1839585,"width":0.032912236,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"key","depth":23,"bounds":{"left":0.7664561,"top":0.1839585,"width":0.0066489363,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=\"","depth":23,"bounds":{"left":0.773105,"top":0.1839585,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"113254367","depth":23,"bounds":{"left":0.77742684,"top":0.1839585,"width":0.019780586,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.7972075,"top":0.1839585,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"theme_id=\"0\"","depth":22,"bounds":{"left":0.80169547,"top":0.1839585,"width":0.026263298,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"theme_id","depth":23,"bounds":{"left":0.80169547,"top":0.1839585,"width":0.01761968,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=\"","depth":23,"bounds":{"left":0.81931514,"top":0.1839585,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":23,"bounds":{"left":0.82363695,"top":0.1839585,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.82579786,"top":0.1839585,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New attribute","depth":22,"bounds":{"left":0.82795876,"top":0.1839585,"width":0.0023271276,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":">","depth":22,"bounds":{"left":0.82795876,"top":0.1839585,"width":0.0023271276,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"</","depth":22,"bounds":{"left":0.83627,"top":0.1839585,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"div","depth":22,"bounds":{"left":0.8405917,"top":0.1839585,"width":0.0066489363,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":">","depth":22,"bounds":{"left":0.8472407,"top":0.1839585,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"event","depth":22,"bounds":{"left":0.85106385,"top":0.18435754,"width":0.011635638,"height":0.009577015},"help_text":"Click to show event listeners for this element","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"<","depth":22,"bounds":{"left":0.70711434,"top":0.19672786,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"iframe","depth":22,"bounds":{"left":0.70927525,"top":0.19672786,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"id=\"intercom-frame\"","depth":22,"bounds":{"left":0.72473407,"top":0.19672786,"width":0.041722074,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"id","depth":23,"bounds":{"left":0.72473407,"top":0.19672786,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=\"","depth":23,"bounds":{"left":0.7290558,"top":0.19672786,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"intercom-frame","depth":23,"bounds":{"left":0.73337764,"top":0.19672786,"width":0.030917553,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.7642952,"top":0.19672786,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"style=\"position: absolute !important; opacity: 0 !important; width:…ck !important; z-index: -1 !important; pointer-events: none;\"","depth":22,"bounds":{"left":0.70711434,"top":0.19672786,"width":0.2727726,"height":0.021947326},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"style","depth":23,"bounds":{"left":0.76861703,"top":0.19672786,"width":0.010970744,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=\"","depth":23,"bounds":{"left":0.77958775,"top":0.19672786,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"position: absolute !important; opacity: 0 !important; width:…ck !important; z-index: -1 !important; pointer-events: none;","depth":23,"bounds":{"left":0.70711434,"top":0.19672786,"width":0.2727726,"height":0.021947326},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.77742684,"top":0.20790103,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"aria-hidden=\"true\"","depth":22,"bounds":{"left":0.7819149,"top":0.20790103,"width":0.03956117,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"aria-hidden","depth":23,"bounds":{"left":0.7819149,"top":0.20790103,"width":0.024102394,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=\"","depth":23,"bounds":{"left":0.8060173,"top":0.20790103,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"true","depth":23,"bounds":{"left":0.81050533,"top":0.20790103,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.81931514,"top":0.20790103,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"tabindex=\"-1\"","depth":22,"bounds":{"left":0.82363695,"top":0.20790103,"width":0.028590426,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"tabindex","depth":23,"bounds":{"left":0.82363695,"top":0.20790103,"width":0.01761968,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=\"","depth":23,"bounds":{"left":0.8412567,"top":0.20790103,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-1","depth":23,"bounds":{"left":0.84557843,"top":0.20790103,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8500665,"top":0.20790103,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"title=\"Intercom\"","depth":22,"bounds":{"left":0.8543883,"top":0.20790103,"width":0.03523936,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"title","depth":23,"bounds":{"left":0.8543883,"top":0.20790103,"width":0.010970744,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=\"","depth":23,"bounds":{"left":0.86535907,"top":0.20790103,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Intercom","depth":23,"bounds":{"left":0.86984706,"top":0.20790103,"width":0.01761968,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.8874667,"top":0.20790103,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New attribute","depth":22,"bounds":{"left":0.88962764,"top":0.20790103,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":">","depth":22,"bounds":{"left":0.88962764,"top":0.20790103,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"</","depth":22,"bounds":{"left":0.8977726,"top":0.20790103,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"iframe","depth":22,"bounds":{"left":0.90226066,"top":0.20790103,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":">","depth":22,"bounds":{"left":0.9153923,"top":0.20790103,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"<","depth":22,"bounds":{"left":0.70711434,"top":0.22067039,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"div","depth":22,"bounds":{"left":0.70927525,"top":0.22067039,"width":0.0066489363,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"class=\"intercom-lightweight-app\"","depth":22,"bounds":{"left":0.7180851,"top":0.22067039,"width":0.0703125,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"class","depth":23,"bounds":{"left":0.7180851,"top":0.22067039,"width":0.010970744,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=\"","depth":23,"bounds":{"left":0.7290558,"top":0.22067039,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"intercom-lightweight-app","depth":23,"bounds":{"left":0.73337764,"top":0.22067039,"width":0.05285904,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"","depth":23,"bounds":{"left":0.7862367,"top":0.22067039,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New attribute","depth":22,"bounds":{"left":0.7883976,"top":0.22067039,"width":0.0023271276,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":">","depth":22,"bounds":{"left":0.7883976,"top":0.22067039,"width":0.0023271276,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"</","depth":22,"bounds":{"left":0.79670876,"top":0.22067039,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"div","depth":22,"bounds":{"left":0.8010306,"top":0.22067039,"width":0.0066489363,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":">","depth":22,"bounds":{"left":0.80767953,"top":0.22067039,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"</","depth":20,"bounds":{"left":0.7034575,"top":0.23343974,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"body","depth":20,"bounds":{"left":0.7077792,"top":0.23343974,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":">","depth":20,"bounds":{"left":0.7165891,"top":0.23343974,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"</","depth":19,"bounds":{"left":0.69980055,"top":0.2462091,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"html","depth":19,"bounds":{"left":0.70412236,"top":0.2462091,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":">","depth":19,"bounds":{"left":0.71293217,"top":0.2462091,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Filter Styles","depth":20,"bounds":{"left":0.6944814,"top":0.72146845,"width":0.16289894,"height":0.017557861},"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":":hov","depth":21,"bounds":{"left":0.86037236,"top":0.72146845,"width":0.008643617,"height":0.017557861},"help_text":"Toggle pseudo-classes","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":".cls","depth":21,"bounds":{"left":0.8696808,"top":0.72146845,"width":0.008643617,"height":0.017557861},"help_text":"Toggle classes","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Add new rule","depth":21,"bounds":{"left":0.87898934,"top":0.72146845,"width":0.008643617,"height":0.017557861},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Toggle light color scheme simulation for the page","depth":21,"bounds":{"left":0.88829786,"top":0.72146845,"width":0.008643617,"height":0.017557861},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Toggle dark color scheme simulation for the page","depth":21,"bounds":{"left":0.8976064,"top":0.72146845,"width":0.008643617,"height":0.017557861},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Toggle print media simulation for the page","depth":21,"bounds":{"left":0.9069149,"top":0.72146845,"width":0.008643617,"height":0.017557861},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"element","depth":24,"bounds":{"left":0.69547874,"top":0.7422187,"width":0.015292553,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Highlight all elements matching this selector","depth":23,"bounds":{"left":0.7124335,"top":0.7422187,"width":0.004986702,"height":0.011971269},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"{","depth":23,"bounds":{"left":0.7174202,"top":0.7422187,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"}","depth":22,"bounds":{"left":0.69547874,"top":0.75418997,"width":0.2200798,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"vue-mq-bh4L87Tr.css:2","depth":22,"bounds":{"left":0.8693484,"top":0.7689545,"width":0.046210106,"height":0.010774142},"help_text":"View source in Style Editor → https://app.staging.jiminny.com/vue-assets/assets/vue-mq-bh4L87Tr.css:2","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"vue-mq-bh4L87Tr.css:2","depth":23,"bounds":{"left":0.8693484,"top":0.7689545,"width":0.046210106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":".btn, body","depth":23,"bounds":{"left":0.69547874,"top":0.7689545,"width":0.021941489,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":".btn","depth":25,"bounds":{"left":0.69547874,"top":0.7689545,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":24,"bounds":{"left":0.70428854,"top":0.7689545,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"body","depth":25,"bounds":{"left":0.70861036,"top":0.7689545,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Highlight all elements matching this selector","depth":23,"bounds":{"left":0.7190825,"top":0.7689545,"width":0.004986702,"height":0.011971269},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"{","depth":23,"bounds":{"left":0.7240692,"top":0.7689545,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable -webkit-text-size-adjust property","depth":25,"bounds":{"left":0.6974734,"top":0.78252196,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"-webkit-text-size-adjust","depth":26,"bounds":{"left":0.7044548,"top":0.7821229,"width":0.05269282,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"bounds":{"left":0.7571476,"top":0.7821229,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"100%","depth":26,"bounds":{"left":0.76163566,"top":0.7821229,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":";","depth":26,"bounds":{"left":0.77044547,"top":0.7821229,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable -ms-text-size-adjust property","depth":25,"bounds":{"left":0.6974734,"top":0.79409415,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"-ms-text-size-adjust","depth":26,"bounds":{"left":0.7044548,"top":0.7932961,"width":0.043882977,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"bounds":{"left":0.74833775,"top":0.7932961,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"100%","depth":26,"bounds":{"left":0.7528258,"top":0.7932961,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":";","depth":26,"bounds":{"left":0.76163566,"top":0.7932961,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable -webkit-font-feature-settings property","depth":25,"bounds":{"left":0.6974734,"top":0.80526733,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"-webkit-font-feature-settings","depth":26,"bounds":{"left":0.7044548,"top":0.80486834,"width":0.063663565,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"bounds":{"left":0.7681183,"top":0.80486834,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Click to display individual properties","depth":25,"bounds":{"left":0.7706117,"top":0.8044693,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"\"kern\" 1","depth":26,"bounds":{"left":0.77526593,"top":0.80486834,"width":0.01761968,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"\"kern\"","depth":27,"bounds":{"left":0.77526593,"top":0.80486834,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":27,"bounds":{"left":0.79072475,"top":0.80486834,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":26,"bounds":{"left":0.79288566,"top":0.80486834,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filter rules containing this property","depth":25,"bounds":{"left":0.80169547,"top":0.8044693,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Enable -moz-font-feature-settings property","depth":25,"bounds":{"left":0.6974734,"top":0.8168396,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"-moz-font-feature-settings","depth":26,"bounds":{"left":0.7044548,"top":0.8164405,"width":0.05718085,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"bounds":{"left":0.76163566,"top":0.8164405,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Click to display individual properties","depth":25,"bounds":{"left":0.76396275,"top":0.8160415,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"\"kern\" 1","depth":26,"bounds":{"left":0.76861703,"top":0.8164405,"width":0.01761968,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"\"kern\"","depth":27,"bounds":{"left":0.76861703,"top":0.8164405,"width":0.013297873,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":27,"bounds":{"left":0.7840758,"top":0.8164405,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":26,"bounds":{"left":0.7862367,"top":0.8164405,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"}","depth":22,"bounds":{"left":0.69547874,"top":0.82721466,"width":0.2200798,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"vue-mq-bh4L87Tr.css:2","depth":22,"bounds":{"left":0.8693484,"top":0.84197927,"width":0.046210106,"height":0.010774142},"help_text":"View source in Style Editor → https://app.staging.jiminny.com/vue-assets/assets/vue-mq-bh4L87Tr.css:2","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"vue-mq-bh4L87Tr.css:2","depth":23,"bounds":{"left":0.8693484,"top":0.84197927,"width":0.046210106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":".btn, body, h1, h2, h3, h4, h5, h6","depth":23,"bounds":{"left":0.69547874,"top":0.84197927,"width":0.07480053,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":".btn","depth":25,"bounds":{"left":0.69547874,"top":0.84197927,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":24,"bounds":{"left":0.70428854,"top":0.84197927,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"body","depth":25,"bounds":{"left":0.70861036,"top":0.84197927,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":24,"bounds":{"left":0.7174202,"top":0.84197927,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"h1","depth":25,"bounds":{"left":0.72174203,"top":0.84197927,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":24,"bounds":{"left":0.72623,"top":0.84197927,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"h2","depth":25,"bounds":{"left":0.73055184,"top":0.84197927,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":24,"bounds":{"left":0.7350399,"top":0.84197927,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"h3","depth":25,"bounds":{"left":0.7393617,"top":0.84197927,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":24,"bounds":{"left":0.74384975,"top":0.84197927,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"h4","depth":25,"bounds":{"left":0.74817157,"top":0.84197927,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":24,"bounds":{"left":0.75265956,"top":0.84197927,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"h5","depth":25,"bounds":{"left":0.7569814,"top":0.84197927,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":24,"bounds":{"left":0.7614694,"top":0.84197927,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"h6","depth":25,"bounds":{"left":0.76579124,"top":0.84197927,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Highlight all elements matching this selector","depth":23,"bounds":{"left":0.7719415,"top":0.84197927,"width":0.004986702,"height":0.011971269},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"{","depth":23,"bounds":{"left":0.7769282,"top":0.84197927,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable -webkit-font-smoothing property","depth":25,"bounds":{"left":0.6974734,"top":0.8555467,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"-webkit-font-smoothing","depth":26,"bounds":{"left":0.7044548,"top":0.85514766,"width":0.04837101,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"bounds":{"left":0.7528258,"top":0.85514766,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Click to display individual properties","depth":25,"bounds":{"left":0.75515294,"top":0.8547486,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"antialiased","depth":26,"bounds":{"left":0.75980717,"top":0.85514766,"width":0.024268618,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":";","depth":26,"bounds":{"left":0.7840758,"top":0.85514766,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"}","depth":22,"bounds":{"left":0.69547874,"top":0.8659218,"width":0.2200798,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"vue-mq-bh4L87Tr.css:2","depth":22,"bounds":{"left":0.8693484,"top":0.88068634,"width":0.046210106,"height":0.010774142},"help_text":"View source in Style Editor → https://app.staging.jiminny.com/vue-assets/assets/vue-mq-bh4L87Tr.css:2","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"vue-mq-bh4L87Tr.css:2","depth":23,"bounds":{"left":0.8693484,"top":0.88068634,"width":0.046210106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"body, p","depth":23,"bounds":{"left":0.69547874,"top":0.88068634,"width":0.015292553,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"body","depth":25,"bounds":{"left":0.69547874,"top":0.88068634,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":24,"bounds":{"left":0.70428854,"top":0.88068634,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"p","depth":25,"bounds":{"left":0.70861036,"top":0.88068634,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Highlight all elements matching this selector","depth":23,"bounds":{"left":0.7124335,"top":0.88068634,"width":0.004986702,"height":0.011971269},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"{","depth":23,"bounds":{"left":0.7174202,"top":0.88068634,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable letter-spacing property","depth":25,"bounds":{"left":0.6974734,"top":0.8942538,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"letter-spacing","depth":26,"bounds":{"left":0.7044548,"top":0.89385474,"width":0.030751329,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"bounds":{"left":0.7352061,"top":0.89385474,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":".01em","depth":26,"bounds":{"left":0.73952794,"top":0.89385474,"width":0.011136968,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":";","depth":26,"bounds":{"left":0.7506649,"top":0.89385474,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"}","depth":22,"bounds":{"left":0.69547874,"top":0.9046289,"width":0.2200798,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"vue-mq-bh4L87Tr.css:2","depth":22,"bounds":{"left":0.8693484,"top":0.9193935,"width":0.046210106,"height":0.010774142},"help_text":"View source in Style Editor → https://app.staging.jiminny.com/vue-assets/assets/vue-mq-bh4L87Tr.css:2","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"vue-mq-bh4L87Tr.css:2","depth":23,"bounds":{"left":0.8693484,"top":0.9193935,"width":0.046210106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"body","depth":23,"bounds":{"left":0.69547874,"top":0.9193935,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"body","depth":25,"bounds":{"left":0.69547874,"top":0.9193935,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Highlight all elements matching this selector","depth":23,"bounds":{"left":0.7059508,"top":0.9193935,"width":0.004986702,"height":0.011971269},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"{","depth":23,"bounds":{"left":0.7109375,"top":0.9193935,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable color property","depth":25,"bounds":{"left":0.6974734,"top":0.93296087,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"color","depth":26,"bounds":{"left":0.7044548,"top":0.9321628,"width":0.010970744,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"bounds":{"left":0.71542555,"top":0.9321628,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Click to open the color picker, Shift+click to change the color format var(--color-text-primary Jump to variable definition )","depth":26,"bounds":{"left":0.71974736,"top":0.9321628,"width":0.06798537,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Click to open the color picker, Shift+click to change the color format","depth":27,"bounds":{"left":0.71974736,"top":0.9333599,"width":0.003656915,"height":0.008778931},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"var(","depth":27,"bounds":{"left":0.7250665,"top":0.9321628,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--color-text-primary","depth":27,"bounds":{"left":0.73387635,"top":0.9321628,"width":0.044049203,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jump to variable definition","depth":27,"bounds":{"left":0.7787567,"top":0.93176377,"width":0.0066489363,"height":0.012769354},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":")","depth":27,"bounds":{"left":0.7854056,"top":0.9321628,"width":0.0023271276,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":26,"bounds":{"left":0.7877327,"top":0.9321628,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable background property","depth":25,"bounds":{"left":0.6974734,"top":0.94573027,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"background","depth":26,"bounds":{"left":0.7044548,"top":0.9453312,"width":0.021941489,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"bounds":{"left":0.72639626,"top":0.9453312,"width":0.0043218085,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Click to open the color picker, Shift+click to change the color format var(--color-background Jump to variable definition )","depth":26,"bounds":{"left":0.7307181,"top":0.9453312,"width":0.06349734,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Click to open the color picker, Shift+click to change the color format","depth":27,"bounds":{"left":0.7307181,"top":0.9465283,"width":0.003656915,"height":0.008778931},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"var(","depth":27,"bounds":{"left":0.73603725,"top":0.9453312,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--color-background","depth":27,"bounds":{"left":0.74484706,"top":0.9453312,"width":0.039727394,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jump to variable definition","depth":27,"bounds":{"left":0.7854056,"top":0.94493216,"width":0.0066489363,"height":0.012769354},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":")","depth":27,"bounds":{"left":0.79205453,"top":0.9453312,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":26,"bounds":{"left":0.79421544,"top":0.9453312,"width":0.0023271276,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable margin property","depth":25,"bounds":{"left":0.6974734,"top":0.95889866,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"margin","depth":26,"bounds":{"left":0.7044548,"top":0.95810056,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"bounds":{"left":0.71758646,"top":0.95810056,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Click to display individual properties","depth":25,"bounds":{"left":0.7200798,"top":0.95810056,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"0","depth":26,"bounds":{"left":0.72473407,"top":0.95810056,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":";","depth":26,"bounds":{"left":0.726895,"top":0.95810056,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable padding property","depth":25,"bounds":{"left":0.6974734,"top":0.97047085,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"padding","depth":26,"bounds":{"left":0.7044548,"top":0.9696728,"width":0.015292553,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"bounds":{"left":0.71974736,"top":0.9696728,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Click to display individual properties","depth":25,"bounds":{"left":0.7222407,"top":0.9696728,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"0","depth":26,"bounds":{"left":0.726895,"top":0.9696728,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":";","depth":26,"bounds":{"left":0.7290558,"top":0.9696728,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable font-family property","depth":25,"bounds":{"left":0.6974734,"top":0.9820431,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"font-family","depth":26,"bounds":{"left":0.7044548,"top":0.98124504,"width":0.024102394,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"bounds":{"left":0.72855717,"top":0.98124504,"width":0.004488032,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Lato,sans-serif","depth":26,"bounds":{"left":0.7330452,"top":0.98124504,"width":0.032912236,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lato","depth":27,"bounds":{"left":0.7330452,"top":0.98124504,"width":0.00880984,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":27,"bounds":{"left":0.741855,"top":0.98124504,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sans-serif","depth":27,"bounds":{"left":0.74401593,"top":0.98124504,"width":0.021941489,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":26,"bounds":{"left":0.7659575,"top":0.98124504,"width":0.0021609042,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable font-size property","depth":25,"bounds":{"left":0.6974734,"top":0.9932163,"width":0.0039893617,"height":0.006783724},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"font-size","depth":26,"bounds":{"left":0.7044548,"top":0.9928172,"width":0.019780586,"height":0.007182777},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"bounds":{"left":0.72423536,"top":0.9928172,"width":0.0043218085,"height":0.007182777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"14px","depth":26,"bounds":{"left":0.72855717,"top":0.9928172,"width":0.00880984,"height":0.007182777},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":";","depth":26,"bounds":{"left":0.73736703,"top":0.9928172,"width":0.0021609042,"height":0.007182777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable font-weight property","depth":25,"bounds":{"left":0.6974734,"top":1.0,"width":0.0039893617,"height":-0.004788518},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"font-weight","depth":26,"bounds":{"left":0.7044548,"top":1.0,"width":0.024102394,"height":-0.0039904118},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"bounds":{"left":0.72855717,"top":1.0,"width":0.004488032,"height":-0.0039904118},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"400","depth":26,"bounds":{"left":0.7330452,"top":1.0,"width":0.006482713,"height":-0.0039904118},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":";","depth":26,"bounds":{"left":0.73952794,"top":1.0,"width":0.0023271276,"height":-0.0039904118},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"}","depth":22,"bounds":{"left":0.69547874,"top":1.0,"width":0.2200798,"height":-0.014764547},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"vue-mq-bh4L87Tr.css:2","depth":22,"bounds":{"left":0.8693484,"top":1.0,"width":0.046210106,"height":-0.029529095},"help_text":"View source in Style Editor → https://app.staging.jiminny.com/vue-assets/assets/vue-mq-bh4L87Tr.css:2","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"vue-mq-bh4L87Tr.css:2","depth":23,"bounds":{"left":0.8693484,"top":1.0,"width":0.046210106,"height":-0.029529095},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"body","depth":23,"bounds":{"left":0.69547874,"top":1.0,"width":0.00880984,"height":-0.029529095},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"body","depth":25,"bounds":{"left":0.69547874,"top":1.0,"width":0.00880984,"height":-0.029529095},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Highlight all elements matching this selector","depth":23,"bounds":{"left":0.7059508,"top":1.0,"width":0.004986702,"height":-0.029529095},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"{","depth":23,"bounds":{"left":0.7109375,"top":1.0,"width":0.0043218085,"height":-0.029529095},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable margin property","depth":25,"bounds":{"left":0.6974734,"top":1.0,"width":0.0039893617,"height":-0.043096542},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"margin","depth":26,"bounds":{"left":0.7044548,"top":1.0,"width":0.013131649,"height":-0.04269755},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"bounds":{"left":0.71758646,"top":1.0,"width":0.004488032,"height":-0.04269755},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Click to display individual properties","depth":25,"bounds":{"left":0.7200798,"top":1.0,"width":0.004654255,"height":-0.042298436},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"0","depth":26,"bounds":{"left":0.72473407,"top":1.0,"width":0.0021609042,"height":-0.04269755},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":";","depth":26,"bounds":{"left":0.726895,"top":1.0,"width":0.0021609042,"height":-0.04269755},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filter rules containing this property","depth":25,"bounds":{"left":0.73171544,"top":1.0,"width":0.004654255,"height":-0.042298436},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"}","depth":22,"bounds":{"left":0.69547874,"top":1.0,"width":0.2200798,"height":-0.053471684},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"vue-mq-bh4L87Tr.css:2","depth":22,"bounds":{"left":0.8693484,"top":1.0,"width":0.046210106,"height":-0.06823623},"help_text":"View source in Style Editor → https://app.staging.jiminny.com/vue-assets/assets/vue-mq-bh4L87Tr.css:2","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"vue-mq-bh4L87Tr.css:2","depth":23,"bounds":{"left":0.8693484,"top":1.0,"width":0.046210106,"height":-0.06823623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"*, ::after, ::before, input[type=\"search\"]","depth":23,"bounds":{"left":0.69547874,"top":1.0,"width":0.09225399,"height":-0.06823623},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"*","depth":25,"bounds":{"left":0.69547874,"top":1.0,"width":0.0021609042,"height":-0.06823623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":24,"bounds":{"left":0.69763964,"top":1.0,"width":0.0043218085,"height":-0.06823623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"::after","depth":25,"bounds":{"left":0.70196146,"top":1.0,"width":0.015458777,"height":-0.06823623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":24,"bounds":{"left":0.7174202,"top":1.0,"width":0.0043218085,"height":-0.06823623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"::before","depth":25,"bounds":{"left":0.72174203,"top":1.0,"width":0.01761968,"height":-0.06823623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":24,"bounds":{"left":0.7393617,"top":1.0,"width":0.004488032,"height":-0.06823623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"input","depth":25,"bounds":{"left":0.74384975,"top":1.0,"width":0.010970744,"height":-0.06823623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[type=\"search\"]","depth":25,"bounds":{"left":0.75482047,"top":1.0,"width":0.032912236,"height":-0.06823623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Highlight all elements matching this selector","depth":23,"bounds":{"left":0.789395,"top":1.0,"width":0.004986702,"height":-0.06823623},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"{","depth":23,"bounds":{"left":0.7943817,"top":1.0,"width":0.004488032,"height":-0.06823623},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable box-sizing property","depth":25,"bounds":{"left":0.6974734,"top":1.0,"width":0.0039893617,"height":-0.08180368},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"box-sizing","depth":26,"bounds":{"left":0.7044548,"top":1.0,"width":0.021941489,"height":-0.081404686},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"bounds":{"left":0.72639626,"top":1.0,"width":0.0043218085,"height":-0.081404686},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"border-box","depth":26,"bounds":{"left":0.7307181,"top":1.0,"width":0.022107713,"height":-0.081404686},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":";","depth":26,"bounds":{"left":0.7528258,"top":1.0,"width":0.0021609042,"height":-0.081404686},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"}","depth":22,"bounds":{"left":0.69547874,"top":1.0,"width":0.2200798,"height":-0.09217882},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Inherited from html","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Inherited from html","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"element","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Highlight all elements matching this selector","depth":23,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"{","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable --asset-image-logo-short-100 property","depth":25,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"--asset-image-logo-short-100","depth":26,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"\"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgNjQgNjQiIHdpZHRoPSI2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS02LjQgMTguNGMtMS42IDEuNi0yLjIgMy42LTEuOCA1LjcuNiAyLjYgMi43IDQuNSA1LjUgNC43IDMuMy4zIDcuOS0xLjYgMTAuMS02LjVsLTMuOC0xLjdjLTEuMyAyLjktMy45IDQuMi01LjggNC0xLjUtLjEtMS43LTEuMS0xLjgtMS41LS4xLS41LS4xLTEuMS43LTEuOSAyLTIgNy41LTMuMiAxNC41LTIuMi0xLjQ1NDU0NTUgMy4xODE4MTgyLTIuNjYxMTU3IDYuMzYzNjM2NC0zLjc3MDA5NzcgOS4zMjAwNjAxbC0uMzI5OTAyMy44Nzk5Mzk5Yy0uMS4yLS4xLjMtLjIuNS0uMDc1LjIyNS0uMTUuMzkzNzUtLjIyNS41OTA2MjVsLS4wNzUuMjA5Mzc1Yy0uNCAxLjEyLS44IDIuMjQtMS4yIDMuMzA4OGwtLjMuNzkxMmMtLjIuNi0uNSAxLjItLjcgMS43LS4wNzUuMjI1LS4xNS4zOTM3NS0uMjI1LjU5MDYyNWwtLjA3NS4yMDkzNzVjLS4zMi43Mi0uNTc2IDEuMzc2LS44NzA0IDIuMDE5MmwtLjIyOTYuNDgwOGMtMi40IDUuNi04IDguMi0xMi4xIDcuOC0xLjQtLjEtNC0uOC00LjYtMy42LS4zLTEuNSAwLTIuOSAxLjEtNC4yIDItMi4zIDYuNy00LjUgMTQuNC00LjkuNS0xLjQgMS4xLTIuOCAxLjYtNC4yLTguOC4xLTE1LjcgMi40LTE5LjIgNi40LTIgMi4zLTIuNyA1LTIuMSA3LjguOCAzLjkgMy45IDYuNSA4LjMgNi45LjQgMCAuOC4xIDEuMi4xIDUuMyAwIDExLjY1OTYzNjUtMy4xNzg5MDk1IDE0LjgyNDMwODQtOS43MjU4MjE4bC4xNzU2OTE2LS4zNzQxNzgyYzEuMi0yLjYgMi40LTUuOCAzLjctOS4zIDEuNi00LjMgMy40LTkuMiA1LjctMTMuOWwxLjItMi40LTIuNi0uNmMtOS4xLTEuOC0xNy4zLS43LTIxIDN6IiBmaWxsPSIjZmZmIi8+PC9zdmc+\"","depth":26,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":";","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable --logo-icon-mask property","depth":25,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"--logo-icon-mask","depth":26,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"url( data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgNjQgNjQiIHdpZHRoPSI2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS02LjQgMTguNGMtMS42IDEuNi0yLjIgMy42LTEuOCA1LjcuNiAyLjYgMi43IDQuNSA1LjUgNC43IDMuMy4zIDcuOS0xLjYgMTAuMS02LjVsLTMuOC0xLjdjLTEuMyAyLjktMy45IDQuMi01LjggNC0xLjUtLjEtMS43LTEuMS0xLjgtMS41LS4xLS41LS4xLTEuMS43LTEuOSAyLTIgNy41LTMuMiAxNC41LTIuMi0xLjQ1NDU0NTUgMy4xODE4MTgyLTIuNjYxMTU3IDYuMzYzNjM2NC0zLjc3MDA5NzcgOS4zMjAwNjAxbC0uMzI5OTAyMy44Nzk5Mzk5Yy0uMS4yLS4xLjMtLjIuNS0uMDc1LjIyNS0uMTUuMzkzNzUtLjIyNS41OTA2MjVsLS4wNzUuMjA5Mzc1Yy0uNCAxLjEyLS44IDIuMjQtMS4yIDMuMzA4OGwtLjMuNzkxMmMtLjIuNi0uNSAxLjItLjcgMS43LS4wNzUuMjI1LS4xNS4zOTM3NS0uMjI1LjU5MDYyNWwtLjA3NS4yMDkzNzVjLS4zMi43Mi0uNTc2IDEuMzc2LS44NzA0IDIuMDE5MmwtLjIyOTYuNDgwOGMtMi40IDUuNi04IDguMi0xMi4xIDcuOC0xLjQtLjEtNC0uOC00LjYtMy42LS4zLTEuNSAwLTIuOSAxLjEtNC4yIDItMi4zIDYuNy00LjUgMTQuNC00LjkuNS0xLjQgMS4xLTIuOCAxLjYtNC4yLTguOC4xLTE1LjcgMi40LTE5LjIgNi40LTIgMi4zLTIuNyA1LTIuMSA3LjguOCAzLjkgMy45IDYuNSA4LjMgNi45LjQgMCAuOC4xIDEuMi4xIDUuMyAwIDExLjY1OTYzNjUtMy4xNzg5MDk1IDE0LjgyNDMwODQtOS43MjU4MjE4bC4xNzU2OTE2LS4zNzQxNzgyYzEuMi0yLjYgMi40LTUuOCAzLjctOS4zIDEuNi00LjMgMy40LTkuMiA1LjctMTMuOWwxLjItMi40LTIuNi0uNmMtOS4xLTEuOC0xNy4zLS43LTIxIDN6IiBmaWxsPSIjZmZmIi8+PC9zdmc+ )","depth":26,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"url(","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgNjQgNjQiIHdpZHRoPSI2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS02LjQgMTguNGMtMS42IDEuNi0yLjIgMy42LTEuOCA1LjcuNiAyLjYgMi43IDQuNSA1LjUgNC43IDMuMy4zIDcuOS0xLjYgMTAuMS02LjVsLTMuOC0xLjdjLTEuMyAyLjktMy45IDQuMi01LjggNC0xLjUtLjEtMS43LTEuMS0xLjgtMS41LS4xLS41LS4xLTEuMS43LTEuOSAyLTIgNy41LTMuMiAxNC41LTIuMi0xLjQ1NDU0NTUgMy4xODE4MTgyLTIuNjYxMTU3IDYuMzYzNjM2NC0zLjc3MDA5NzcgOS4zMjAwNjAxbC0uMzI5OTAyMy44Nzk5Mzk5Yy0uMS4yLS4xLjMtLjIuNS0uMDc1LjIyNS0uMTUuMzkzNzUtLjIyNS41OTA2MjVsLS4wNzUuMjA5Mzc1Yy0uNCAxLjEyLS44IDIuMjQtMS4yIDMuMzA4OGwtLjMuNzkxMmMtLjIuNi0uNSAxLjItLjcgMS43LS4wNzUuMjI1LS4xNS4zOTM3NS0uMjI1LjU5MDYyNWwtLjA3NS4yMDkzNzVjLS4zMi43Mi0uNTc2IDEuMzc2LS44NzA0IDIuMDE5MmwtLjIyOTYuNDgwOGMtMi40IDUuNi04IDguMi0xMi4xIDcuOC0xLjQtLjEtNC0uOC00LjYtMy42LS4zLTEuNSAwLTIuOSAxLjEtNC4yIDItMi4zIDYuNy00LjUgMTQuNC00LjkuNS0xLjQgMS4xLTIuOCAxLjYtNC4yLTguOC4xLTE1LjcgMi40LTE5LjIgNi40LTIgMi4zLTIuNyA1LTIuMSA3LjguOCAzLjkgMy45IDYuNSA4LjMgNi45LjQgMCAuOC4xIDEuMi4xIDUuMyAwIDExLjY1OTYzNjUtMy4xNzg5MDk1IDE0LjgyNDMwODQtOS43MjU4MjE4bC4xNzU2OTE2LS4zNzQxNzgyYzEuMi0yLjYgMi40LTUuOCAzLjctOS4zIDEuNi00LjMgMy40LTkuMiA1LjctMTMuOWwxLjItMi40LTIuNi0uNmMtOS4xLTEuOC0xNy4zLS43LTIxIDN6IiBmaWxsPSIjZmZmIi8+PC9zdmc+","depth":27,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgNjQgNjQiIHdpZHRoPSI2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS02LjQgMTguNGMtMS42IDEuNi0yLjIgMy42LTEuOCA1LjcuNiAyLjYgMi43IDQuNSA1LjUgNC43IDMuMy4zIDcuOS0xLjYgMTAuMS02LjVsLTMuOC0xLjdjLTEuMyAyLjktMy45IDQuMi01LjggNC0xLjUtLjEtMS43LTEuMS0xLjgtMS41LS4xLS41LS4xLTEuMS43LTEuOSAyLTIgNy41LTMuMiAxNC41LTIuMi0xLjQ1NDU0NTUgMy4xODE4MTgyLTIuNjYxMTU3IDYuMzYzNjM2NC0zLjc3MDA5NzcgOS4zMjAwNjAxbC0uMzI5OTAyMy44Nzk5Mzk5Yy0uMS4yLS4xLjMtLjIuNS0uMDc1LjIyNS0uMTUuMzkzNzUtLjIyNS41OTA2MjVsLS4wNzUuMjA5Mzc1Yy0uNCAxLjEyLS44IDIuMjQtMS4yIDMuMzA4OGwtLjMuNzkxMmMtLjIuNi0uNSAxLjItLjcgMS43LS4wNzUuMjI1LS4xNS4zOTM3NS0uMjI1LjU5MDYyNWwtLjA3NS4yMDkzNzVjLS4zMi43Mi0uNTc2IDEuMzc2LS44NzA0IDIuMDE5MmwtLjIyOTYuNDgwOGMtMi40IDUuNi04IDguMi0xMi4xIDcuOC0xLjQtLjEtNC0uOC00LjYtMy42LS4zLTEuNSAwLTIuOSAxLjEtNC4yIDItMi4zIDYuNy00LjUgMTQuNC00LjkuNS0xLjQgMS4xLTIuOCAxLjYtNC4yLTguOC4xLTE1LjcgMi40LTE5LjIgNi40LTIgMi4zLTIuNyA1LTIuMSA3LjguOCAzLjkgMy45IDYuNSA4LjMgNi45LjQgMCAuOC4xIDEuMi4xIDUuMyAwIDExLjY1OTYzNjUtMy4xNzg5MDk1IDE0LjgyNDMwODQtOS43MjU4MjE4bC4xNzU2OTE2LS4zNzQxNzgyYzEuMi0yLjYgMi40LTUuOCAzLjctOS4zIDEuNi00LjMgMy40LTkuMiA1LjctMTMuOWwxLjItMi40LTIuNi0uNmMtOS4xLTEuOC0xNy4zLS43LTIxIDN6IiBmaWxsPSIjZmZmIi8+PC9zdmc+","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Enable --asset-image-ai-icon property","depth":25,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"--asset-image-ai-icon","depth":26,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":":","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8zOTQwXzE0OTgxKSI+CjxjaXJjbGUgY3g9IjIwIiBjeT0iMjAiIHI9IjIwIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMzk0MF8xNDk4MSkiLz4KPG1hc2sgaWQ9Im1hc2swXzM5NDBfMTQ5ODEiIHN0eWxlPSJtYXNrLXR5cGU6bHVtaW5hbmNlIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSIwIiB5PSIwIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiPgo8Y2lyY2xlIGN4PSIyMCIgY3k9IjIwIiByPSIyMCIgZmlsbD0id2hpdGUiLz4KPC9tYXNrPgo8ZyBtYXNrPSJ1cmwoI21hc2swXzM5NDBfMTQ5ODEpIj4KPHJlY3QgeD0iLTAuMDUwNzgxMiIgeT0iLTYuMTI0MTUiIHdpZHRoPSI0MS4zNTE2IiBoZWlnaHQ9IjY1Ljk5ODIiIGZpbGw9InVybCgjcGF0dGVybjBfMzk0MF8xNDk4MSkiLz4KPC9nPgo8cGF0aCBvcGFjaXR5PSIwLjk3OTM3MiIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMC42MjggOS4xNUwyMi41MDMgMTBMMjEuNjUzIDguMTI1TDIyLjUwMyA2LjI1TDIwLjYyOCA3LjFMMTguNzUzIDYuMjVMMTkuNjAzIDguMTI1TDE4Ljc1MyAxMEwyMC42MjggOS4xNVpNMjguNjAzIDkuOTUwMDVMMzEuMjUzIDguNzUwMDVMMzAuMDUzIDExLjRMMzEuMjUzIDE0LjA1TDI4LjYwMyAxMi44NUwyNS45NTMgMTQuMDVMMjcuMTUzIDExLjRMMjUuOTUzIDguNzUwMDVMMjguNjAzIDkuOTUwMDVaTTE4Ljk2NTUgMTMuNTM3NUMyMC4zNDA1IDEyLjE1IDIyLjU3OCAxMi4xNSAyMy45NjU1IDEzLjUzNzVDMjUuMzUzIDE0LjkxMjUgMjUuMzUzIDE3LjE1IDIzLjk2NTUgMTguNTM3NUwxNC43OTA1IDI3LjcxMjVDMTMuNDE1NSAyOS4xIDExLjE3OCAyOS4xIDkuNzkwNSAyNy43MTI1QzguNDAzIDI2LjMzNzUgOC40MDMgMjQuMSA5Ljc5MDUgMjIuNzEyNUwxOC45NjU1IDEzLjUzNzVaTTEzLjQ2NTUgMjYuMzg3NUwxNi40MDMgMjMuNDVDMTcuMDUzIDIyLjggMTcuMDUzIDIxLjc1IDE2LjQwMyAyMS4xQzE1Ljc1MyAyMC40NSAxNC43MDMgMjAuNDUgMTQuMDUzIDIxLjFMMTEuMTE1NSAyNC4wMzc1QzEwLjQ2NTUgMjQuNjg3NSAxMC40NjU1IDI1LjczNzUgMTEuMTE1NSAyNi4zODc1QzExLjc2NTUgMjcuMDM3NSAxMi44MTU1IDI3LjAzNzUgMTMuNDY1NSAyNi4zODc1Wk0yMy43NTI5IDIxLjI1TDI3LjUwMjkgMjIuOTVMMzEuMjUyOSAyMS4yNUwyOS41NTI5IDI1TDMxLjI1MjkgMjguNzVMMjcuNTAyOSAyNy4wNUwyMy43NTI5IDI4Ljc1TDI1LjQ1MjkgMjVMMjMuNzUyOSAyMS4yNVoiIGZpbGw9IndoaXRlIi8+CjwvZz4KPGRlZnM+CjxwYXR0ZXJuIGlkPSJwYXR0ZXJuMF8zOTQwXzE0OTgxIiBwYXR0ZXJuQ29udGVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgd2lkdGg9IjEiIGhlaWdodD0iMSI+Cjx1c2UgeGxpbms6aHJlZj0iI2ltYWdlMF8zOTQwXzE0OTgxIiB0cmFuc2Zvcm09InNjYWxlKDAuMDA2NjIyNTIgMC4wMDQxNDkzOCkiLz4KPC9wYXR0ZXJuPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMzk0MF8xNDk4MSIgeDE9Ii0xOS4zNjU2IiB5MT0iNDYuMTA5MiIgeDI9IjU3LjYzNzkiIHkyPSI5MC45MzU4IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGNzQzN0QiLz4KPHN0b3Agb2Zmc2V0PSIwLjE4Mjk3IiBzdG9wLWNvbG9yPSIjRjc2MzkzIi8+CjxzdG9wIG9mZnNldD0iMC41MjMzNTciIHN0b3AtY29sb3I9IndoaXRlIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFCMzg4MSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzM5NDBfMTQ5ODEiPgo8cmVjdCB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjxpbWFnZSBpZD0iaW1hZ2UwXzM5NDBfMTQ5ODEiIHdpZHRoPSIxNTEiIGhlaWdodD0iMjQxIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpjQUFBRHhDQVlBQUFER01pVStBQUFBQVhOU1IwSUFyczRjNlFBQUlBQkpSRUZVZUY3ZHZlK3JiZHVXSGJUVzJ2dmNYL1hxbFFsYWZzMWZJWVZJa0NBaUVvS0lTQkRSZkJEeGd3UVJDU0x4blgwcENnbUZoQkJDRVVJUmdvaUlpSWdmUlB3Z0lwSi93ei9EKys0OWUrWDEzbHZydmZVK3hseHI3WDNPcmVpN3ZQUDIzbXZOTmRlY2M3VFpldXV0OXpIbStmb1AvL0ZmK09sMCtndW4zNXIvZm5yc1ROcG04c2Z5Y2J5dzIzNitkdVB2bjA3UGNWdy95VWFmZUtqek8zYkhjN0ROT041bjNiKy9kN0F2L2R6eUdYenUxamJjTjdmSm4zRlNQLzMwLy80LzV4Lys5QisvWEM3WGo0K055TSt3MWZuOFpYZDZ2ZWIrcmlmYjk5WC9KeS9pVjd6dTI4dnYrZmw2N2V5ZnQ3L2pYM3lrL3NZTDhUMnZyL2krZXYvOGVqNWQ4M3ZrYzY4NHNMa3YvRzNmNjUvVGYvTlk3VDNiajIvVGordk0xL2grYm9kejJMeHUrNHJQNFo5ODV2U0s4L3VFNzdUM1hxK25xLzM4Wkovait5ZmI5UHZ6RC8vZy8zNDVYMDRQZ0FzWDRsRXcySFoyZ0RlMnZ3bXJSNzluUW5NSExtREROMjFBd3dWVUFQS2k1aUNlNG1MemczWXhjNXNOeUhKZ0NwQm5INkM0SEFyU0JJVy9QRUVYZjl0M0wyQVdvQWVnRllBRFlCTjQrTnNCMFFBa053YStOMjhVQi9DckkrWjBmWFVnK1hjQ1ZMNHZBMldDaitENisvL1hIWERaMFFzTXRvZzR0MDNhZU85QThnamdmaTV3TllDOWw3MEdvMHh3TkthSndTZUxOR0NTNVNaN0R2WUxnQTEyTWxRNTg1RzVOa0NYN3kzd0FveXZyeDIwZzhYaWhoanM1U0F5a05uUHptSlhZNjRGWEgveWZ6N0dYQTZxSXhCdEVNZnQ4YkZFMzl4MEE2SmxiMjhCMnNKY1pJdGRhSlFCdWNOZU5vaWZIUjRaZ1pjd2lPTklvQWlRd0ZJZFlBejFHaEpIV0JSd1pIalU3elgySVNzNm1QRjVBc2paUzlpTTJ4aUFQbjBhNERKQ2V6MmRUVzdaZHZIMjkrY2YvdVQvZURtZk4yRnhFTllLRGtDQVNGZ0FvR3czNEhJRVZPempzOEJGRmtsbEJkMjFoRVJ1a1BIcWp2YVM4SWlCZUd0NGpEQVhrYVdGeDQxZWFreHpDTENkMWdKUVc2Z3M1dlQ5TXFRQmJFdUl4R2VUdlNhTGZVSm90TS9iNzRaTll5NEpsNzhoemUvUFAvN2QvLzNsZERsdk5kZFZBY1BmRzRobXVCeUFTNmJiYkpjdllmQmwvNGRhN0ZFR3U2ZTdib1ZHdmpkMUZVQjd5RjRFdGQyNVM1aDhRSC9Oc05mWVRUNXZiS09EUGZWWE1oRFpTQk1Uc2hQZVF4aHJtczUxVkgxMkFSaVpqVUM2QzY1a0xsVzdlK2JaQXM1RFgxSllYRnhscDF2dk1WbzlBcTcyUFUzWjlUOGVBWmNDVElHazJWaXlJQWNvUHZTbThOaEFFNFBtbjMrTHdDZGcrQ0VOWTZuWGhNVUdhMmttMmJTVU13L0RvNFJZWVRiZlBrTWlOUmlZeXo1TGNKbSsrNmxZMFpucmg3L3p2eUVzTW80WFVNNDU0SW1BUG9oNDN3RzNZemt5MS9raWdsL1piUjlhODN0MytIbUV2WTUwMTYzUXFFRGFzZGN1ZTd3WEhuZTJBY0JXQU1NTnZRRG1JQk8xNFhFeFBqSkVaVEJrcDR0ZFlzbTdKaEVDTHJjVUxGNHorNlJ3dDVzaHdZYjNYWE1CbUFCVTJoRjRQY0QxdC8vWGwvUFpmSzZERUNkc3NReDZFKzN4K1dRMkJWeUNpd25CK0s0UmNyOGt1TUExWlNVb09TZllSdGFvNEVyUVVYVEh6N3ZoTWRsdytGQUNnZ2F3Q1phWlFZNGs0RkRnVTFQdHdpeTFsTzVMTXo4TnVXQTBZeTFQQ0ZTbk1YUlNleGt3bmNVQXhFOVgyL3o3OHc5Ly9MKzhuRTF6N1RUVkxlYWkrSFlRWlJ4TUJtdHNSbkF0M3pGWXpQNEVLQTkxMXlPaFVaaHJBZGRrcnkyUWFHNXFOa25kUTV6ZUFwZ0FhbUd2MGs4OVJDb1RiU3dTWmJhN0dTUVlaZ0F5L0REY0hCbzZDU1FIRjlrSmxnT1p5MWlObjNHOTlYbzYvVlNlMXcxd2FiYTRDMXRIb1l5dm4wODloTmJyMTR1RlJFZE5rV1A3ZSt6N1VpRjJDN0N0YjdZeFJ5V2tobE12cUxyTFhnSWtNaGNCbXo5bjlpaG1wMzVteTBBRFlORFBhd1o1dzNKNEs4Qm05amd6UUdFbW1xTHBhV1ZvWkNJQXJVWE5CWEYvL1dsaHJ2LzU1WHlTYkRGMXVRNXRnY1hIU05scXNOWUVXWUpMUlQwWktsbEk5aS9nRWo0c3FFeHdEZHpraG05aEw0S3RBZWlJdlRROHZoVmd3NHRhOUZjSFhiTWpKZ3VKMjk5Q0pJM1ZHZm8wVE03d3FJeEU5aUxZSU9nck5OSkVOZWFpb0krUXVJTHJiLzFQQU5lUkRzSndMUm1maVBoTmFIU1E0VjhQa2NKaUxVeUMyWkxwNG5zWDl2b3NjSDBoOWpvVTkyQ3ZuWkIvUzNoVTV1UEFUemJVRERmTFJNenNCS1M3ekZIRG8rc3BBcVljK1dDdmVuM0pHazNVdTVpdnpOSEJaZnY3aVpycnYvb2ZYeTZueTBjZHhSRGxtMHl1c1pxd2pXb3pmUGJzSUFFOGZ1UFNwdEMzMXdrYjBWZ1pOcCtlSktEZEFWZXlwbVM2L1BSZ3JyamM5Z0dKaVRTS3BYU0lBaUFLZ1lPOU9NQU1zZmhjMWg0eDRCRUpOMFhwOXdEc3FFUTBtUXdXU1dnbURhZERmeDJGeHlQMmNzOHJuSGZQTkpQUkFDNFg5ZWJhdjI2WTY0LytoNWZ6NmZJeDhLR0FrY3hQZ2JZQlVvWEtZaXRqcldDdkFiQm1XNXhQcHd5RER6RFh3bG9TRTZlT2FrQUl4QzNhSzRFb21KdmFhcGFGdGdDN0krNjFXK0VCZ04xMDhEUGJYSzJLYlFicDlzS21Uc2hqWXYxUmhUeXlRd2RxdXU0R0xtV3pUL0dlaVhvdkNiMmVyajlPNXZyRC8vN2xmSG9LaHg1TXNvaHphM0NZYkxZRG1iM1d3SElQWUFDamZjYStuSjhWRUxXd3FPQlMxcEpvMTJqdkVmYlN6MjYxRjBNTTlxemhLRU1WdFplRW95dzJEeEFrNjBuQitjaWUySWJDL2gxWnpzRzJLOEJHRmpxRlBIVWZYNmZOd0ZhYUZocEZiOWwybmkwQ2dEK0J1VnBZTkhCZEllaFZBOUZxY05DUmtRNUFsZ0xkQUlKd21Ca2hBUmI3U1AwbDd6dW9ERnhQREpsaTVDcGFGTkJOalczQzRrRjQ3T3kxWWI0VXloTGFHRXBudUd2aDhZM2VsN0taaVBQRm5yZ0hzS21wR0I1NUUweUJUNFlhWm1yVFZNSldORWQ3V0FUSURGaTBJeGdXNFhlRnovWDlmd2R3SVN6TnNLVnNsaUZPUUVaZ0VTQWk1Tk96a3ZEWXM4ZkJWcW5ITnVCcVlWdENPQWY0emV4bGNMNldEa3ZXRW9iYWhVQWQ3QW5nbSticXlCUWZDSTlCYUJ2dFJrMlZJVyt5SS92QTBCb3pReU5OVWU0SE9xMDU4YlFYbHRBb3dMTDNmcVNnRjgyVmd2N2x2MzA1dnhwenFWNGFka09XY1NUTXBVZ25RQWlJQVpqenBXbXZRM0FSV01LZTI1Q29JRXRXRStIZDR1SUFpcnhuREhZVFhJdldHdC9Sd3FNV2h3WGxLZkJGWUMvNlMwSFhRMTR2RVduUldWcDBkaFlGbS8zczV0bGxpdzFjWmZoMlRVVjk5WnJ1KzhKZXlsd01pNDI1ZnZYZnZKeXZsaTFPaTJERFpHQ2wySFFUNXZ4MW1LYlVYemFJa2prMmNKSGxhRDgwYTBMTGtacTVMdVlFRVJRL2Q4SytNUkEzQzNERlI1QkZQc0plL0k0ajRYK3ZOSFJEa05meGgwNnFEdFliN05XNklucTlzZnRmM2tZcWZWdVNSVXBodW9WSFdBMVhMMDRIMk03eXUrc3Roa1dDeTdVWXJZaS9hZUJDK1VlMUUwT1o2QzFsdDhYSGNqR3U3SFVKZ1E1R1BPUDNCVndPTE5WcHNZK0VrSVJpQi9RUmVONFJIak9xcVlQL0NNQ09URmV3VXRZZEpZUkdvWm5NdEdsU1ZKUHpyUUkvdkkrMWM5VDFGN3BZMHk4YkRZWXE1QjNRSXRwUjVvblNqcjJPakJHL3U4ZjFJOTc3eVV4VXZFOXcvZmhmL0tPWHEvbGNFdnBVd0JlZ1ZOZ0hhem5BTGtPa1orYjNBTGpJV0VjaGNRS3IwTEFMZnNWZ0Q3TFhUWEFwQzk2ekp6SXIzWVJIK2V4dGdEMGFIbmZkRXRySktqNFhRT2NBYStHeHZLdW9OVXJkMEh2aHFhc0tWQVJZdldlZEVjcGMxOVAxeHdWYy8vRGxkRFVyd2tEU004TUtsV0lacUNaeXRycWNyczFLUUdnMHdFem1zbTB6WE9KOWRlUVpkam5xeXA0VFR2Y1k3QjdBbkFWcm8yYXdQc0plRTN3VGdJK0lleFgxUzdpOHBiK09BRFk4TGRXRjJwUEY3eHFzNWRmakU3b2dzdU1oR012YzkzRHNMVFRTbVJjajFabkx1bEdqTEJTZHFQKzVnWXRoY2JEUURKUHFReEVJZU8zSzBBYkF1U1Z4Q0M3b010VmFSOENhZmZzM1FhVUl2R0ZQekN4dkdxejZIYmU4cjYzKytneHhuMkYwZEdQUWk4cm94MTlrT3cxN2k4aS9FeDc5czlVTnNZVEdUNTlDMUxzSDlpbTBvSWRHZ011QWw0SmV3ZlUzL3ZUbDVPVWZ5UmFOeFJKSVIxa2dRaU5BbFA1VmdpdFlMZTJJWkRrRkZyUldDNHZVYm5hbGo4UjdnZWp1Rmhzak5UKzlNSmRvb2wwSS90endpTSsvTnp6NkZZR3VpMTFwQmpuYmRJWUdzMjJ6TkxSejdObXpGU0V4QWVZT3ZERlhXUkQrSHNIbExyMkFDd0wvTndUMy9mbUh2L0duYmtWUVB5WElORXdtMEFpTUFxSUxkWVpHZGVpVGxlSXp0WjB4R3Y0TlFNZDM2MXpIdTlCWnROZjZpWGNhckEreDF3QmpocUV1M3RmR1FqMG15ZUNhTUNjcnZTYzhpc0FYUUcyN0p6STBTanVOWm9VZUhzUExpcXlSWVJIZHFEK1J2ZUJ6TVN3NnVQNnpmNUJXUkdXQXB3QUFBWmF1dTRETFExNkV2Z1FPd2RYWWkxYUVhVE1CMWlYMFY1U2FDTmJQQTVZaWJRSFpFWU45Tm52dE1zRCsydHV5UndYVGV3RTJTajRTSmtQY3ErZ1hVTG4vRlVBcTVpS0lYdU56cHNreUxOcmZuekpqOU5waUE5ZC8rdmVqdHBnZVZoZnZQZHhKNkJTOTVENldaNDMyRThEMDM0UFZ3dWM2bjY3VzhXQ2dBc2dXWU8xbUM5M0lDKys5dGVXOUNiSXR1RzZFUi8zODd2ZEgyQXZhNnFIdzJFUi9hYXlsUmJxRnlGc202MUY0MUU1VGRFQzBqbE16VTZlZ04zMVZvdDdBNWNEODZkVXcrdjM1aC8vRXdJV1dHNEJnaHNqTThCeUFnNzBjUERCVUNUaXJFUTV3WGUwMUI5WnpGcWc3dUdBRGJSMzRnTkhiZytUbU16ZkFGWkRhMUJzMU02VG8xcDkrZEtwNWRIRHJ2V2pOS1lDMDBzNFU4NGZaNDJUSzdwbDF5NkZZTUpyOU9QdUkzaGVOVkxJWE9od3lLMlJJakovVVhXR2s4cjNPWEFOY2YvSnlmcjE4ZEpaUk5sTDl4RklQTTBDQ2pGcnNRb0RCbGxCd1haNmN1Wnl0bnA2Q3ZTUWNCak1LQjlIcXVFTkxqd010QmxSczJXWkI1R0RqK3dwYzcyQ3ZXUzhjb0hzNFBDWndoeDVqNldnSFpDOVFieFl1eVV5emg4b2VIc2Ywc1dRb2dBZ2kzWmxMMy9PL0syTjA4Qmx6L1VqbSt1dC9VZzU5QXcrMUZHcUZKd0NIZWlyMUZRVTdtT21KSURVd2djRVlEdkd6c2tqdzBUdkFaZGYzUVJ3bXF4aFRScExWSWFSKzEzdllpOXJmOTY3V1JRcjBBL1k2Q0k5THNScjdyZFZuN3JCWGFxenVoK1huTWFQSHYyZG1rSmtKUXJpbm9BL0R0SFFYZ0dhQThuODlZNHl3K0IvL3ZSRDB5VnpRVFBDb0dQSThwRG1ncUtYNGU0RXJRcCs5YnRxSzd6ODVZemxyOGZWWkpDZExQWTZXcFF4MCs2TXk2Tnh3Q1k5Q2xjMUw2OFphZm15cnZSajJwTDlMalV6L1hSbFIySVJBbStHeHZsQW0xQjZVa29UWkFqaEQyS01jbE4yazF1WEh6dEtyeklVMDBlN0NYUUFFa0xIT2VEYkc4cktRTVJmQTlTTXl4dFJjLzlIZmU3bGNMaC9kblhkQVFGY1pBM240S28yVmRVSE5Cc0ZPSWVvdnA2c3pWd2gzWnk3N25lRXc2NGphb2ZyMmtNaG9NeVBuTWNDR0hUSGMrZTMrRWxNSDRNclF4WGdxdGo1K1RhYlFiUW13QVJwdFRTYTdSbWtHQUVsVzVJenRJNEJ4ZTRUSUhjQmt1bjQwRzRibThrbXh5QVFOV0s2dHFLL0lUTXdZazlFR3VGcFkvQS8vcm9NcnhEWUduUXdFWUtYQW4rd2xmdFhaQVVTQXhVOTdiUUhYbDJBdG91ckFyVjlCOW9CYkQwSkp3RDdDWGhNMHFySGM4T3dDUHZhOXFTRW1XOFY3MW1WMnE4aWQrNFhPNnZzRVk5bGV4SUxRVnVkYS93R2RFbXhmWnBIYlhIaDBQd1JEMVV3ZjZxNENIalNYOVhYUnBVL05aZUE2Vy9rSGRnTFphOUZmd1VScFRhU2VBcENjdFFpdVlDNEhGME1paFB6U044WU1iYVBRNzRyMkc2V2dMd3V3QjloTG1RZ1lhdURhQWJHRnlaRkp6dkNZbnc5bW9sT2ZJT1ROb1JwS0JiNHdtR2FPVWZZcGQ5NEJLU0V4UUZUOThnMWN6bUszd1BVZi9KMlh5em1ZeTcwcUJaZVlvZ3g3N2xjeDVCa2dFUVk5SXpUd09aZ3NleHpBMHBEb09oNkY4am5MYU1ZNi9IMEl0QnNBdzljd2J0MXAxNm5OMmlHOEpUeFN3Q2NMQ2doYUdDVjdDWk8xdnF4NC9UQThZbDhMd0RTTWl0WXIwN1EwV0xDWGVGdjQzVU1qTkJmN3RjNzJHdnZsSWVxVHVRZzhZeTVxcm1TdXYvYTNYeTZYcDQrbjV4THFLY3dsSTNSaFQxMlZUanY2M3MxdU1HQmRuazVYMjgrVDJRK2l0WmdsSWlTNnZwdUc2VjJhaWlGZm5mY0ROTXJMd1dJUGhzYkQ4UGlGMmV2UjhEZ1piR1NnTndGbXpMS3pKM1Q5aDJTdUFGcm9MZ0dZOTJnSnVNenZVdkRkQlplWnFCYlNuSVVDUkkzQlhOeGJtS01SS3BraVJIc3cxOVBwK2lGMFZtZ3dzQmZCNk9Xa211eXh6STI4ajVOM0F5eFk3RUdBVFRhOHgxNnFyV0k0NDB5UUdTWUFkdXlsNENGNzVXdkNYdHpmRVBoYlhXZmZleGdlZGUwdE1VODFORnEzQXdFRXhpcW1VbkJaT1AwcGJJZ3RjLzE3Ly9YTDVmd1VZZkc1cklZQUZ3RkhYV1ZNWlphQ2drc3l3NmZuMC9VWllkRitWM0NoaHZnbHdMVXcySjNRV0pnZC90WXRNTDhKWU1PZGIrQzZJK3dWY0dsVHZFTi9UU2FjWXQ1N0FyV095TlZyR0JvTGFFMVhXWG1IbVNPQWxzekZHcU50NCtCQ04ycUd4WC9Yd0FXZnkxaUk0VEZ0aFFKWTJnMXBNMFFJVE52aE9jQVZyR1ZsSHI0ZnJueGZYa2tnOG1CSTNHRWhQL29HZ0czRDYyN251cytEN0hIeHZUYkNQaGVNMnpGY2VsUEZkSWhsYmViMG9yOFNsRlBnQzJzU1lMdndhQm1odms5THd0cHJHQmE5YmtoN3dqSklHS1hUampnRTE3L3p4eStYeTNPWXFBNHVNcGFFUm9SREI1ZHJLM3BZRVFyamRRdUp6NWtkTWt2MG43QTBxdFFqUHRmREkzMU1NNVJVajBYVmpzS2J1SDZBdmQ0RUxnbDNHVGZUSHR1MDRjendlS1MvOEhycEwwZHNMZVFtTE9aZmg5cGhUQUlab2RFYUF4TThBQmQ2NkJrYUZ6dkNPeVBBWE5icW5NeGw0UEt3Q0hDWnZuTDlKWFhDQTNDeFh1amdNdFpLY05ubkFUVEpFbjh1Y0NVK0gyS3ZkYU9IQVhhVHZVYnBwMmt2VHBobFFWc0syNkxOd2pSVnpWYUdxSnVjTFlScUtLNHcyaDVRWUpuVENJL3BmUmtnZEwxNWdzeFhEUlJkWmF5RTdnanJkdkFDTmd6VTFHRmtPQXVMRFZ4LzFaZ0xWZ1NCaGREb1dTUC9lZDlXNkNreVY0TExHZTlEaUhreFR2TjNpUGlmRTF3T3NJZkFKWU0zcUc3Zm9qTTIyb2o3WUs5YjRJcjM4L2kwSkxUN1hOS2gxZ1pqSHkwOHRnSzJBS3kxUEdNZjRuTmxUWkZabzN0YkFUWnZYYzZNVU1NaUhIdXpJaWE0bExrc3UvenhlbnI5ZFAzKy9NTmYvZU9YOC9ueTBhMEdPdk1mTk93Vmt5M2dndDQ2bTRnM2NFSE1GMnNGR0dtY0hvR3JMZUliTFlxUFJiak5WbzhCN1BiK0c4aDJteXE3SkJtOUVWeXFtZTZ4MXhJZU56NVpXaFRqOFNwa3cxenZWR3FJYk1ISk1GbHROQ0hhTzdnOGd6d0VWMlNNUHIyc2dldDAvaGk2U1VLakE4VWEvQXBvYmtWNHRnaEx3cll4Sjk3Q0ljUTh5ejNGWUkrQWF5KzgzZ1V5NjVaNENKcWZBYkFCcm9wV3QwTmpzdXVSc0o5aGorZWhvUzBqcDJhVUVtNk5JUjAwbzZkczFCaGRWMjNCTlppckxUZ1M3TFVQaTlmVDZkY0RYRC8rMjMvOGNyWHl6eFBha1RVMHV1TmVvVEY5THJqdzZjWjdTS1NZaDk1Q0NJMGVzVmhncERFWEx4enFOR0dzNW9zTkhtOEcyVU1BZTR3ZHQ4bkN1OEMxQ1kzdlpLOE1rS3JSR3BoMjdBWDlCcEJsa2RwREl4akxmeEpjVlYrczFXeXFtTDBZcWRhRmFzemxtZ3RoMGNEMW0zSC9hTjBNekFhZHdkd01QU1BVbFJNZkdnemF5ekpGaGtTWXB5ZG5zekJRdzdvSUd5TEJsU1FsYU5xME02U0xENWk5Q1dEQXpXMEdld3hjZWJqYnpMRmVUTjJWSWE2elNWeUEyUDdRVk9WbkYyYlQ3b2o0UGZZMGkrRGNEaDZXYXJ1RnVXUWVJbDE1MWdxZG5XUUtHV1lBR2NnMFkyd2xvQzI0L3EyLzlmSWI2L3FqTVZRd0U0QUUzZFZFUGNKZ0I5Zno2ZlNCNW1rSitqMjRKUHpseUFNMktBbE5RQ2pJL21rQ3pNWngxV0lkY2ZlRnZZQnJDWUVNY3dvYVFhb0NEcjlYOXdSQnBhRVE3QVdQcTdYdmNCMTd0ak16UkxKSURhK3Jzc0hxU04yREM2dmRMTXhsNEhMbWl2Q1gyc3NaNllKYUljMVZDSFIyT2p4ZlR1ZG4wMXNVODlJVXlIMFpjekVrU3RSclh2bUd1WFF0K25jQlRNYjltTUVlWjYrWlk3U1daWnpYbDJPdm5YYTd4MTRBb3F6SDFXd0plMXVta2JXTU1jR0Y5aHEzSWpiTUJVRmYyYVQwMkdmNTUvVjAvalhENHI5cHpIVnl6ZVZzd3hxai9YVDJzaEIzUG5tNFF6ak1OaHB6NHcxY3lsd1dFcUczR0JaekNCa2VId3lOdmxuVFpBR1RoeGhzNE9hekFYWVFGaGVtVFlacGlKTjY0NWRtcitHZFVYc2hlMHlUbENRSUlOMEdsODJ3bGlsa0RJdHZCOWNmdlp4UVc4elFTQkZ2NERMMmNoK3JneXRzaHdEWDljTUh2TTlzc3RwdTJuS1h2TVJrS25aSGtOSDBwN0JaWjdFdkRiQWRlOWwzak5mdmFDNFBtN244aElhNHZmWnFucGVHeU5rbzJONmJRQnJHcXJLVFdCUEwwcFlzOFdoWXpCblUwMFNGZzgvT1UraXVlRW9aRWdEYkQ1bkxCSDB5MTc4QmNDVnpzUXhrekFYaGJxWnFlbGdJZlI0Mm4xM1FPN2hTNUZkTjBTZEVtS2puVGF5cXBRR3NwblIxSnVnemc0ckZmazZBOFFqZURxNjZOKzZESzRYOVlxTHV0SmNjeTVGVG44WHkwVGVmTmthRlZYOTJFRU9oTDR2RWNBaGZ5L3JwMlJYQjRuVDJ5NXZWRVd0SFZDUGhFYmoreWgvRkkvRXMvTGt6YnpvSzlvTXpGOXFYQVRRTmlRRXVsSDBrUzh5Q2RiYlgyRE9laFpZMm9TN2VMV2gxR1JZZ0M2THJtZWZkRUxraHBqVkVjcU1EWUltdWJpVGJuSFI5WjREckFFQTMyWXVNeFYyMWNKc3Y5aVhKOHpNQ01QdHUxMXFpMlpnVm9saWQ0R0pMc3dyNkJCY1gxZzJMd3VaSDltd1J6WUtOdWY3eUg3NmNucC9RenhVaDBPMEZhcTRkdVB3MUUvSlBycmY4SDhvK25GV2RjeUN0dXlLdk80QWhJTW1seEpmUUNIYVNyRklCOWlhUmZ4ZGd0b0ZDN2tEb0w2RlJHV1dld0FGN0hYUk41RVhTOTMwWHM1OWVrRDR0aTFGSFhOYkMxM1VoakswNHU4ZGJhdnJmb2JsMC9kTmF2ZG0yTGViaWxQNGpjRmx0RVlBcWNFSEVmNFhXWldVdWdvdkFndjRLSVk4V0hKbGdxK1Vkdng0N3pYVkRmN1dubUhIVlFXbVRmZzk3ZFo0OEFNYTlseHNkVDVsMkZCcDNHbXhvS2Y5ZVlTZitlY1JleWxoc09IUldJamk3Z1JxZ3Nsb2kxMzZ3c01qSDNHRlZHMzJvQWR0dXNuRndBeTU3endyWHZ6Yk45UnExeFIvLzlUOThPVDJkbzgwWjNhTXRMSDZ3Y0duNktxd0pCNCtCeXkwSVk2MFM4d2t1bWNvZkM4UEZmMXY3QWFEeVM1a1NhNWZiMlRRMzdLZ0I3RUg5ZGNSZWg1Rnc4NEZiekxXRXpzbHE5MnVQOTlsTC9DeE5PRnA1YUlSQWZZOTk4N3JzNUt1Rk9iQ1dNSm1IdldRdVBrZ3EycDFaQW1waE1jSDFTUVQ5dndadzBYWnc3d3BoMGNEMEZjQ0Y5eHU0dktZbzRHSm85Q1dUc1BnSU95SkdhR3dLNVNCN2pKY1ZhQU5nYjlGZk8zRGRqSVFQaE1aSG1FdEIxelFhOTYvNlNhNEtzejJ5MGkzMjJtbXRDVGlaL0Jvc3hWNTVkSnFxa2VxYWl3L3hyS1hBYzhMR3JvL2V3ZlY2dXY3NktzejFyMzcvY25xK2ZQVE1rT3hsQUhQTlpab0tmZkdaTVVhVzZPMDFNRkJwVTdobDRXdDF5UUp2b0tOZ3BnMGphWmpjbUsyK3lrUDdIQUVHa1M4QWUzTjRITXRVZFBmaEFYRHB3Tjlpcm56dm5leVY0RkVObGhWc2hJVWg0ajBzc2g5TUYzWmpIYkVNMDFvQ3ZDYkIzZ0pYck5jbGsyYXo1UWFQYU1tdytLOTgvM0w2Y1BsNCtrcHFobTZPM2dNWHdxS0hSdFFUZFhhUWdZcXIzK3hBcFRmcHhxTElhT1hNaDRWRUtpNENwd1V3Q3Z5YkFHc1pheDFBUXI3aDZSM2dhZ0Fibjg4LzczZE85UEM0MFY1SFBXQlpTOXpZRVp6NG1yYURnb3doRUd3RzV2Sm1RcTZOS2o1WEE1ZlBESUtGWVYwUnBybXljUDJYQkZ6aWEwVkIyc0tpc1JSOExuaGJwYm1NMlJBVzNabm5Lb1BGWExOWHE0VkQvakdZU2JkUmJ5c1hwL01Od0dCdjFWOHpNYVNNdThjOFBLaUhkZGVSWnZ0TTlqb0tqNHZ1R2dERGVxWmR6R1B1SWtzOTBvYmozYWpVWFh5dW9zKzgxdVdUMkVBbzRMSUY0Sks1REZ6UDUyQXVCNUVWb2FHNzdvSUxOZ1E5TGdVWG1DdG4rd3g5c2x4NnJrQWpKWjhZVDFvU01jRkRBVllQd0tyUVNUQWZNdGdCdVB5YkhtR3VDY0pEM1hVRFhGc2R0bU9va1ZuT2JERmxtLzF5Wko0U1FOVmxHbjFjc2c0RTE1ZHY0SW9WQ0dQT29naDZYZlVtUXlONjZJMjVGRncvL0tYdlh5NldMWDVOY0tGZGhock1CTDFyTDNoWnlCd3JXNFRmNWV0SURNYmkyaEtxT1ViR25rT2c3TVU2U3E3alJhYTZEN0NId3FOUzQ0WktOYi9kYm5xTHZXNEI5R1pvRk1RNUN3bFYrdTgzd3VNczlYQjcxMTNWQTU4aS9rM2c0bVB2MWhWdlNuY3B1S1Q4ODhPLy9QSnlvZVl5OW5JUDYrbDBCcmdDV0U4ZUhwa3BybFlFT2xOZEg4bFNTMHVteUNlcFFvUE9rWnZhREg4WFExMmN4eXo4NXVvN3lYUVZKdSt5MXgxd0ZWLytHZWd1eDgwbWMzeUkzY1lralcyR0tBd0ZSejVBQmtHZkxuMzFkN0VXR2N5RjEyVTZQeldYTC9UbXJyN00vbEdmYXdHWGw0SFlCSGdKMXZwcWdxdG5pMjY4NWdvNFhCc1ZOVVVKZDJ4eGE5ZHpETFJxTkMzMzFNTkJiWTNBcUZreVJLWmw0VXdYMEhnWHdBYVdIazRPNWdrcDYwd2dOeGFTTjk4RE1ETGN3bHdJazdxOFpIdEtobVNLQ1Rqci81SkhzMkJoM255Z0FSZDVhN3JyRVhDWkZXRmhFUmxqZ3VzRHdEV1l5ME5pV2hFeHM5b21lTmlBaGcyQjhDaldnbzZiZ213bGtXNVh1TTV5dkhDOU1QekVXdmxrTUxJYkFmZnU4TGdocXkzSUhncU5EK3F1NVc2N2t5RTJmZFViQkhNcUdkbkpYSHFHd2N3WUt5dk05Ym44aWJFRFhHeTdjZDNWMTR2Zzh1SDNtWXVheXhqSzNYZFlFZDd4c0RKWGdDdTBsdGNZM1R6bG9yc1NHdFY5QjRyaXNvSE9kN2JYMVF4WWhWd1ZxaHVBakxrV0JyTnRQek04SGtSQzhHRy9GOW9kTXo2b0RMWG9PdG0yaVhMUldWczIzRXljVmZiSzV5cXlGVWI4TFJhd0NUcjdIQmVCZ3hQZndPVlBpdVd6ZktRcEVObGlkK2sxTElwRDcyRnhnc3MxRi9UWERseVk3VlBncW1YQitlU05MUFcwc0xnTEE1RVFYdVBCUTdHQnBHM3h0TE5TUVkzQkZHQ3V3N0FQU1FUZUhCNXZnSXRIbjB4Mmw3MXVhVGF5MDhFMW1RSStwVmtBckQyMFhicFBVMC9wRWtsOFg3TkJoc3lqc0loV2FLNHJuenByWjBVMHphWGcrb3N2THhleklqd3NzcldaZ3Y3cGRIVzlKZG1pMXhxUkliYkZSdW9KWm13UTlNc0hFelRBczk2eEtUVm1xYWQxUTF6eGpDc0JvR291aG1LK1JwSC9sdUwySUkwMVhHOWV3Y0dYQ2ZzTzlqcGt2d0pmeWdpWFV1SzZwNENQMTRONU9HVk0xdDZhNEdMTjBNTWxoVHcrTDJ6MnNNOTFLT2didU1CV0ZoWmRVd0ZjMUZ4WnNNWjczaUJZWVpHZWxzOGlUeFlLRjcwZW1DbUp2Zy9PMEZoRkQ3VzhONEIzdm1CN3h4aVdkZUpQckx4VFdlUTd3K01Eek5WZ0pqNlhIMmFySDBJQzdKQzZiRWZkSUpsajRrczBHQUcyOGJXaTBBd1B5NEVtWUd5Wll0ZFdBVWh4NlIyMDdOblNCNlZMZUd3bG9LT3crQmRmWHM1UDU0OW5ZeTc3bDVvTGRjWEJYRDQva1MwMi90UEF4Wm9pbEltQlNVbzFiSGZRSktwZlc3NnpFV0VFRnBuTmkrSmNKeHppM3RmQjU0TVZzQ1krYTVKdnFUMStCbnNsZmdab2pzM2NqZTVhd0ZuYnhFd2ZyUit1d0lsK2VRRE1OWlp1UTBzQ3BxcXNnNXFQdWh1dmJabExRRlZ6RjQrc0NBZlg2ZVBaUU9SR2Fsa1JLZWFWdWJ6bGhtSytWZzhNS3lJWWFyZHlZSUhOaEdLTjRvNG80alU2ODBWbElha0lLQmJDQjhBK1h6ZG5BQUFnQUVsRVFWUlEzNlQrcXV3Uis1dTk4VnRXZVNnbzFrYUxTOStCYzV4dDdnQ21vajNBVWNBNnlBenBWZWtxZ1JOYzB0YXNvVENjK2dCY2V3U3hyT3k4YytoRDBJc1ZZUzQrYTRzcy8vendMNzI4bko5UEg4OWZBMXpJRUtNM25wa2lOQmZESWlac2NIRzNlQ29HVzJ4RTlpYmJWSmdNU3lZdXFzOUFHVkpNbzJTRlZoYXVBM1RwYi9sS0FmVThJZ080cjJlUlRQYk83UEd0b2ZFRzQvZ1JUL0RsdmZVWWV4MnlsZ09vRm05ckMra3F1S1lWSVRxcmZWNlp5MEROYmxTV2YyaEpaQWxvQnk0VjlBa3VDNHRzQ3BSV0d4ZnpNRkhoM2tmaklLZVExU05YOUZFclpDcFhTWjR4b28rZXdKb0Rva2xUMDExZ01iQmlBQXRUenZ5NVE4cG1JenhpRVpRM2UxK2ZDNjZOOW5wYmVGVG5IV3ZiVFBmZGpqSDFGWHF2R0RvcDFIa2pKMnN4Sk1wcWdnS29oYm55d1ZKSHRjV0htUXZaSW9ROHc2TUR6a28vN0VoRkoybyt1TURYazNndTBRN1o1SVpxZ2lRWUpIREZFcERldFdBeUNZY3RNR1hMelF5RllDWThrQ0dlNndpQVlTa0IxMkl0ZTN3d1BINHV3QVpiUGNSZXFmOExYTWxhQkt5NjhRa2lBVmNDRHNuNUxkWWFwdW5kc05pWUMwdUtzL3lUWVZHWjYxLzgxY3Y1dytYajJkeDV0eU5NVDVuMndoUjkxMklEWERJNTFoZlo1WnIwN3NpTHFCZHc4Vm9IdmlUN0dZWHNVbVB4Mjlvb2lBNi9kT3p4ZUJpYjJJMzJhc3NZZlEzOC9ObTdLUjd5dnQ0RHJpOFZIaE5BZzdVVVlHbVlobEhxTmtTeUcxZTVFWGFEcmxyMDFpRno4ZG1MNklvd1lMSDB3eDR2VHV6Z1kvRVd6WFVFTG5hYkFseTVzRnViSUJ2QTh0NTUrbG1jRDQyTTBjVTcyV3hxalZ4UVE0cis3aENPckpFbG9FRGJlQUJvUFV6MHpFZktVTlNUdmY0L0VoNFAyV3ZlY0dJM0xEY2piSUxvTXBXVm1Ra3NBd0VySUV0RzZMRzBQZThubnYyRFIrVU56Y1VIZS9yUFZyZ3U0TVVhWG1aWGZOb0krZ2t1YytiSld0UmFiTHNSQzhLRU05ZVhpSWQ0b2hzQ09Fa0dTNm9QWktraHFCZnVLR3ZzZllTYk9pUDZ4dHpmTXBlZXk1b3pQS0t2MzhNbGR5YUwvNzZwT04xaTlZMC9ibVNQZDhPakdxTjV0WFRTUmEyclJhWnlDNElBM1lKckF5Z0ZxWUtyRmJobGF0a1J1SHhaUysxRWxXYkJILzdnVnkrWEQrZVBwMjlvUlR3QUxsMHpJcDhaRk9EaU9sdCs3QzBWUkkwUUYwRlZGclZZVHgzRmJHVlZxS1lIU1VjRUhvVEY1Mmo3WTJFQU5JWkZySXV2blJWK0dHenBPYkluM2hzYVozZ2NmeThBR3pJaFFLTzNJdjRXQWU5c2ducGhYd2ZWYWE4VzIyMmFTOWl1bFlkcUNmR3NMektqSEUrTHJkV2QwVWRQY0hFNnYwN1FjSEI5Wloyb0FKZjNkS0dsWmpLWHJHN0QrWW5XQmNIMjVucmtTdFFLWi9jRC9Tc1ZxWTMyTjJUZ2JzVnNKRXhqRlpsanpwRU1BNVdMMVBudk9aY1NpNnlJbGZGUTU4VFBCRENQOER0UTdUU3BocnltcmNKVTNZS0xCdXBPMEJNNC9yTS9jekduazZsZDBiUldudzEwYnVBYTh4YVR1ZHlodDh4UW1NdkNJT3FLWG1QTWliT1llb1lud0U1d3hUVUxBMHZIQnZkVVV2Z1dXS3JERW14OXBrOU9jSFF0UmhNVkRPYUFxcWQ5WlBiNDlJeW5xTDB4UEg0T3VIWU1KcSsxUitaQk5QZ0Yyd242b2JIVXJUOEVWMmFUbzl4RFVHVzJXSXgyRjF3TWo3bkM4MndXMUd5UllkRkFaYUdSek9WVDlTZTQrT0FvenFxTy9xMVlJelc4ck9wd2tNQkhsbmV2aXE3enJNTnBvTHloWnl6VWlWTlBvSG1HeU1jaTQ2SHRQc25FbWF6V3lqKzdiZkxHN1BGekFYYVFSWFp3VlNnc2dNbGpoVk5MZ1dteUhBUUdCTHVaTWUwNmNzdGNCNEplbUN6QlpmdGdTRlRtd3FPRzgvbEFTMWpVTm1lQ1M1bUxpK2R5M2lMcmkraFNiUStZc3RWeCtEZzlQeTFxcGNGYWZ1MEdnTVNmYUZzYmUyMm1vMmw0eklrYTZ0QVROS2d6T212NUV6MjRxQjJXZlRLd1NYdE83MzQ5UU5LWEJCaERXWUpPckJsK2o1WjkydnhENkNPQTZ6eW03RGR3TGN6MUNMZ0V2RzQvd0VCTnh0TFhzRzRxdXlKOGdzYnI2ZndEbjNHOVpTN09zc2Ewc2cvUEo2czlXaE1objZuSVp3QTVjeG1nYUdUQ1ltR1NXQkhTNEZPMW5rcW8rTkRKU25nVzNtck5nNkxCbElHa1U5VXpSd01Vc3RnTEp2UlNmL0Vob3dXd24xbmM4NFNvbmFpMzhpSU0xb0lnOXh1dXJXVXFYbGFDUzRFWjEvSk56RFYwVno0cWo2L1ArWW9OWkp3WUd6WkV6TGpHV2hIK2pPc3RjNkZueTEzNWNPN1BObi9SU3o3MTBFNCszU3pDSVFER3dqMHVLTGxxM3ZnaExhS0lIWk45UnNGMkZ4bVZ6Y3c3ZFdrbklTNkwyZ0VzUHNhUHl4TllTT1FEUmpOVTh0ai9yTExIUTliQzdjZ3NNUzJKZ3lsajd3RlhzeDlHNWppOUxnK0xSMVpFdGQ1RU0rR2MvZk1JYzNtaE9sejdZaTZzOGl5enErdEpaQ1hpVTVjMmtJR2RVQUxLUjRYa25YMURhK2xiNGxjeHVqV1F3ZU15WnVMU21iRzR5dFBwZ296WHRSZDYvMUdzckc2T0tGYXRCL1BlMERpeXdrVnJ0UXh4ZGtMVVk0Vjd5dzB5Ulc4RXJOYWFRK2E2SWVLM1JpckJKWThnenFmQ3lzU1BCVncrNC9vV3VLaXRoTGxpSFM0ODRNQ21qOEZMNHJvUUtlYVJLQVlSeVdnSU1ZWFc1RVVoK3ZZak4xL05tVDVNU0pGRTFFd2dzQ2l6Um5sT3BDMVU1L3JMV29hdzVLYUh5dFJmMm9mMkJRRW00RnJzQjE0anZSNnR6ZVkydUx5Z2tkbGxBTTd0bXhidStxUHdBa3lidmk0K2FFclg4VXB3OFZuWG9ybXMvT05oVXBqckVGeG9kYzRsa3dndVRvcTE5VkgxaVdWMDVYM1dUNW1relhLUSs5ODdrN1RnUDMwZUNqV0Y1VWJZNTlvUkNJdlo5SXBzMFJrTE01R0N2U0piTlBaeXhzSmorM3hsUkF1VnNwYVlINEo4NStjeldPOXcrUG5CRlRmdWZYRDFaMXMzdDM4QjE1aWcwWjVpQm5mZVRGUUsraTF6ZWZHYTYzSFYxUDd3dXRCbUE3SHNxeitmd2tEMXdkaUJDL3JCelZVQXlWbUxWSjV6TWJod2JJVk5qVW5KWGxwajFLSTJNMFpxTUs5bGgrYXlZN3RJcDRSbmo4OGZrRVhHTTR0QzRFZUh4ZkxzN2M4TmtidVEyS3dKQ1dzYTN2aTdab3FxdzZZVklYOXZ3VVd6bEVsQzlzOGZtYWhzQmh4VHl2TDVpeUxtVTNQTnA1WnB0bWpna2pwaU1GaE44MmRZcEsvRmVtTHZuWTk0bFdFdk5WY0FpTXpGZGR6ajJ1ODlydGpIdnZVNVh4M3pHbjF6Z08zQ0dVSFVZQ3hvWTRueldFUGYxblVGd0tTVitxR0hYZDNWWUtJRkFMSkQ1aEpnNVJNeUNDYWQzWk1aWnpGaWhVWG90UjF6elNKMjdsc25jcUFiRmNJLzJwaEhEejJ6UlY4VGxhR1MyZUlkY0YyellkQWVjQUFuWHVZenVsbUtRZks3bkpOaHMxZTlPS2ZMcW11VXcxSXJBVkJBWEJ1bkE1ZmV6WXdXc21xQnJYRHFlMmVxMTdRZFdKak1BUjBXZWl1V09UOS9NQmFMUmV3eVBOSU0zbmx0VStqZkJOZ2o0S3FicXdUN3BrR1FOK0ZrTDIrM2dSREJlMXZObFIycjByM3FMSFlIWExrSVNYK3daejZhbU5taVdSSCtZS25yUnRCYk44VFhsOU1WNjBWa3R5bXNpRmlQUHB4NVB1TTY1eWhLbDBGMW9NYUZUZU4wK0Y4NnpVekYvYzZ5Mk9XUU9lNnpIU2QxV0xVL080T2hpaEM5WHBFNUJyaWVUeGRmQmlvWVRNUGoxRjg4amtXSEhRTHNCcmlPUWlPb2ZXbHQzb0VMWUZKd3VlUklRYzhKR3lMZVhlaVBUbFMrNW9KZXR0MnN5WldtYXJaQWl4WGhqMmZaZ2N0RDRnRzRLT3pkNTZvYVhtTXRkcDZHYVJVaFVGRHhLanFyWGg4TGs1RHEyb1dYblRCc0tkclkyVURXU2kwR1VZL1hML200bUZqRXBBSHNLd1BZVndCWWxJZW92NDRBdGdPODQxclBnZDBKY2o3dC9XWGJNZ2s3dU1iRURDMEZlUWdjVmdTMVJ4YXRoWjFtUFZFeXgwd0NkSExHcmRJUCs3elF5eFhQVzN5WXVSQWEvUmxBbURCN0JDNkdFbmVJdW9aeXMxVFpYeTQyZ2RZMG1tNDhTcERKSHJLUWI2ME9YV3VtTm1zQzYwb29nMTM0eUQ3TEZqODhPWHVkdnpLQVVYK3h6d2RaOEM1cjNTRHNIcmdhQUNlNDdFMEkrSlc1aHBtYUFwNWRFVU52MFlySWliTDR2QXI1QWJUSHdBVXJJcnRRMFNqSVoxejd3enluejdVTGk5Wmw2Z1hzZXNDVU8vVE1EcW01NkhKNzk2azhWTjR6d3k3WUUwejVzckpYZTllSHJxYWhiWU9qckN0Um1xdWNlNW04Z2REdERFWnoxWi9VRnZYR3kxY2ZRbjk5OVZWb01IbVVIOEY3YTVWRVVacXlHb0Y2ZVJVaTc3S1hyZE1nNEdubXFRcjZlM29Md256cUtpNlJGSE1jTjUyb08zZCtsSDE4K1NSYmhva3R6dmZBZFpVRjREeExoRU9mV1NNZXFxNWFLekxHVk9tWXV4Z2hNVzlNRWVnelhIYkdrb0FwWVpRRFYrOWlrb1Vra3JGNENjTVo4b2FzTjdKTVZOMnFGOVFkMlRWaGszc3ZYMzg0WFl5OUhHQWZhdG9hZGR6d3dPNkdSbGZXMUFlOXZMWE5Ha1dzQjNtUFJYUHpmZFlZdTRHYWVrdnRoaWJhUjBjcTk1K2xuNkhGV3FhSVJlUmtaY0Y4UEF1V0NmZDE2SStZYXdWWGlIZ3ZBYms3ai9VZ3VEeWxEMTRzeGtZL3UzZWlGc0lvQXlRNkJqTlJtYWttR3dMNTFwSkxtU1g2L0l3ZXlyd2t0SFB3TCtjVEdZd2RIdEU5OFhRNmYvMzE2ZkwxVnhFaXpYQ2wvL1VHZ0JWd1lPU2xHSy9icEQrYWhReFhvYThYclhIVkdOSjJIcGV4SFM1eUZLN0pTRHQzdnE4UndVa2JUY3pidmhKYzRzN2JmdWRVL3B2Z3dwcW9uaWxtdGhpZEJiUWpiTkZkRi9ESXV1Z2xzYlU1czBRM1RPTWlCclZMeHJqVXB0V093R2RFaDB5dnJBSHp3RkJOYWNUZUxqRmJhekt0ZXhTbjBtQjQ1aEZLUXc2d2I3NEd3S1E4MUFCV2JEMFpyTEhTaHJsdXV2UmV2amtvVmplUEM3VkYzclg0WE81YndiV2JxSkVoTTBEWUp0VHVsazhhVFlKdHljb0UxMDdRUDU4L1hqK2NBMWkrWGdUV2Y1REg0ZmtzSDMvK05SeDVoSndFRnk1OGFDN3A2YUxYUjVHL2VBMmx1UlJNVGVzdURkTTZuRVBFNHpneVVndWJKYmljNVdKS1dtYVJkbTRHT0N4WDRBRDc5aHZYWWM1Z21xa09jZCtlUTFSM2x1VExHNzFWbW9GM1ZVNE55NURJc0RYMUYvNTJwdGs1ODlRa3UyeHgyaEJMU0F5d3Vjcy9EVlJkTnR3RlBXd0krOG5IRUMvWklzRUZVUjk2eTFZTTVPUHhNSVVNZjNObXRYY09zZXlEbEQ5blZrdklpM1B0R2FSZlVmZStoTDNJZHcyQVFuY2JzejdZVEo2c0liKzNsWi9uMUg5cDFYR0F5Wk55SFhnbTdyOHhCaVBBQm9NSml5M2FxMlc3RHdLTEdpdUwxdkprMXdOeHYvVzN1RzM2VmQwazNSYXN1Y2hiWXpPRTFvMlFUOVp5S3dJaDA4RzEwMXhQazdua1VYaDJvY0ZnN0lRSW5SVlBJOHVaMVpqNTQ4RFRVSWhZaHZ5SDhUTEhJNWhlaFB3OXIydW5vcFZKMVBlaTNpS2JlYWpzR2FRRDBEVVlIL2hlZnh2QUx0OStmVHAvOHgwWWpNdHhLc3FyU29CNzQrMk1SV0RoWjRYRlcvN1dwcjFaUW1ST2ZzMnBZcU9QbnIxYXRnQkpzeTJzeHc3MkJydFExVXlGNW1yUFdrem1PZ0xYVitkWWg5NmZVblp4NzRlaDBPN3FtUHhxT3F3SzFTdTRlbWNFcCs0cloyazA0SHB3cWMwV00weVF4QTlpWEdPZm1NZkl6YXJnbUNYSlhGdUNRTXMrKzVpaEhkRWRrenFNc2YwMWhraTdIZ2F3YjAvbjc3Nk5EQklUYkplSnV6djZ3ajF6dnhPaUxJdERaMTdGdkZvUUVQTFJJMVptYXRnWFhBeE9QSzVOcTgzc1BxMVZuQ25lcGI2STF1Y09MbU90bUpudGJjN041ekxtYXVBNnh4TmdBU3Evb0FZcTcwTFZ0VTh4aFl4WkkxamoxVlB3S2w0blprYk5zRnd0OGJwMkFHdk10bEpYTFczSk9qZXp4dGlXQU9NS09YNllDYklJcVE0d05nOXlLWExUWUM0UlBwd3VCcTdmK2E1N1lOdUt3YlFleEVFdmF0czhoRE1vdnVtdEp1eGxkclZvcldZLzJJY0hDUFB2QTYzbFU5TjJkVWV5MmE1M25ucExHYzFxa0RmRFlqSVhXSXpyUUZpVzJKb0R3MzVBdDNhR0dvYklCcHJVRXIwY2xOdk1JdldXdmNCOXVhN1hMamFLRlVFOVJDYkxVRmxUMU5MQ0dEMWdXZVIraW1VQ3ZCY01xL3BjdnZzdUFHWWl2NW1zUGNISVNhbDJoY2dtSlFSS3dJOXdDQVZSalh6YnJOSEMyRUc1Wi9IQnBDbHd1MWFFWm9yYVBJalBMYk4vZEJxL1BLYkZWM29POXZMYTRrL3EwRk56dVJNUFlPWHpGMFBVWjkrV0x6b0NyYVgxUkw0bW1aMUQ0cUJnSFdTMDFpQ3pUalFYaUJ0Wlpzc21LWHZBSlA2RHBpclpKUzB3R3JEc3ZTOFdZNU5oOXQ2alpTYzlNR3YzL3ZxYjAvbDNmekVZYko5cFBCUU81VHFraDNNMDIyYzQ4cW1OL0RxTGZVR2Z5OWxuZWxwRDRJOWlkVDFuRVN5WXo3YVdmbm91SWE3TWhiQVlTNHA3Qnd3bWFGeE9IOTNqK25DR1lXcWh3TFFWbjdzWTA4ZlNSRTBiQXF2YVNGZ01URWd0VVJzREdCYlNucWc3UG9CSTdYRWc4TE1mYkNBTlBWOE1iNkhHOEovcko3eHlDREFzVDU2T1BvRG5rMnZqOTJ5UnR0Zk1vdmpsNzRMQlpOMTliUWRLUzZKNHZLM3VNMEdsRm9iL0xqcHBhejFnY2t2TER1VnpLZElWWU1wTys4Vkh1dDdDWjNjZVYwNDd3MElrQ2k1N2F0bDFnc3NBNVMwMm1PVEtEazNMRmxsSDFNZmMwWDVBMWNYQzVLdWRMT3FMTk45eHltUDlnL3d6SU1kd0tHR3hKNDZiZGIwVVFNUlM2MUN0R1VJUVgrWGlJM1FtSVBVNVF3U1V6SU4wa09GNldOSDcvTTFYcDh2di9mSjArdnByOThmYTZqdTdFRWpCclVWOWhqR1JEb2laWXpta0c0WnBFL0c2akJMdjRQM2l1dDJWdnhFUzdZYVhCc0dZRVNSZHFQYSsyUkFNallmTVJYQ1pvWnAxUkdNdmxIM3NOUlh2K0oxaDBvQ1Y5Nm05bHlHeEY2Y2IySkxaWnNhRUVmTEp3OUF1ZkdrU2wwZ2VkMEt3V0Z4MnpyQ1JrRm9zSDRSUVU5TmlXMlNmMUdFTWkxeEJwNjFEWVJuMWN3RE14RDVicVNmZ0FhQTg1QjFEcGRnQ1d5WFlLdFRwbFAxc1kyN0F3bFhWOEVqdzNqSk9jeHQ1cUlIYkRWSkNrdlc0NG5rLzFGdTJIWHZvelliQWV3dHorVU1Oem5pMklweDRab2Q4bHFLWGY5aUVweDRYdWlIYzl4Szlpb3l4TVpDSzJBeHp1TG9FR2o2UW1STUhiSGhpc2F2S0RGTy81eVRhdlh0ZjQ0K1FDWVlxQi84YXl3REFBL1ArTDl4SUVTWTVnenRtRWwyK2l6RHB6NTVrYUsxN0F5Rk83b3dOUzJmblExNGZ3SEdqc3lJNEhFeVliVDMzTEg3ZnFpWGVZQzBiQi9XNlVFYktaMXN6Tk5LR01IQ1J1VnBZSkxoTTBIdjZqUlptems5TUN3S3pVVlBBaDhBeFJxTUZrVGNpc3ZLdFNacEE2bFBRNnNhV3UzalRlaE1jbVlXN1ZGbk42cEpzTVF2WXlWNHgyQVdnWWpFb05FeXExWFVsYkxKSHNEaEI1aUh4MmZyQm5rOW5ZekhUWTV4TkpJeWFpY3JPSk5id2lIb3NNODdwd3E5K2xoYW1lYzNJZUNyMFozc04vZ1pJRjYxRnpjYUdRRHp6T3BjSGR6WkVsc2lIcDV2UTk0WGdodVp5TUhsVFlHU0w3bWU1QmNGT2lDaC9CSE9Wa1BmN3k0REZXZFA0TzBPZmxINzB1cTBHSzVxSFdmNFEyMkdaN05GU1JZcXRuckVWcnVwMUxsVFN0a3dUdFJnWitXUUllZkhFUXE5SFBkSkRLT3FSTkYxOVR1UjMzNXd1di9zTGI5c2hpK1ZOTUVWK25vY2tNbUMxWm1Gb1VacWhNTmVCR0VYdUp2REY0V2RvekNJMVB5ZHRPQXlIekRMWnBZcXdhSDVZclBETTJkaWNHU1FlbDljanQrQ0NvS2YyWWhnYzNSQmVuRTRiQXVBYWk0ZkVtdlFxMmtWM2FVMVJpaVU1NjJWcHY0bUx2OE9Va2tQN3ZWVmxwUFpvcktNYkFrQU9KSi9SQVM4c2VDMjhMdG9aanFsNDN5WisrSkxrWENwVHhiKzE3L3lPdWZyZnhRTzRiSjhrMnFHdjZqRkhqY3F6Sk9hM0hBVmIwMU5jOTNTQWEvSEd4TFVIMjJTNVo4ZGFCQlMvYStpdEZQUHN0RWdoajlMUERsemVGV0V1UEVOaU1wYjBjUGxNSDZ3M1QzM0ZtaUp2UGluUE9MZzhjZ0VjTmlwKzBCRUttL1NnSkFHd1dCSkt1VFdRRlorMWhTWXUxYTRxanp0VEs4Slh5K1BTUzQ0TVdoV2kxd2d5QW95QlZzQ1ZvcC9pSHpPTHVHSzA1dzJ5c3FGM1dKZ2U4K0ozcmRWZmQwcWZROUNBbEptUnNCclBXVVI0cmVXbEdvd2FkcFNFR212cHBGajVMSVY4OXRITFVrcWVKY29Fai9TNWdxMjhVZkNRdVJ4Y29ibGFldzEweG1zV2ZudlJPa0lqYmpCbExDM2h5c1VLbkZoYlJ3eHVaVkxTUFNIOXpVMnpOWmQrb1FOMXVBUkUzWkx3MVcreVVtVHFHR0VPR2l6dEtnZWhNQm1GUDNXYk8vZ3g2UllDTHVaMTVCUzJFUDdlY1dGdDFGOS9CU1l6b0VsbE5IMnR5Y01qZTZ3N3JUK3FaV2FOZWRmZUFsZnNPN1dXZlNhTDJjd1VaVEVTRnF3WlhpMUxkSnVDL3pDSjFxZWl6YkJvd0Vwd29kemo5Y1RxTnEzMlpwQVJPeU1hdUVJN0tUUFZOWUhGS3FDNkVrU3Y5am0rVDZaVDVQV1oyamtNTmpCRWcvNHU0NVFzeHBDb0E0c21pY2dPRldUQUMvZUQxaUxxTUMwZk9ZQ3locGxPcmRjbHVUNXJobGdycVpuVGJ3bUF6dlN1RTZxN1RmTVZCUlpmenhBNHVpY2EySXJGV3ZkRENuYWF0V0FvRmZLcHVZcXQwb1pncHNpdytJbFd4QVRYK2ZUUkJUMEFGdUoraEVOTzI2ZmVzbU5LOHpRNkRKS2N5RjUra2tVMUFUcDcwNjNXWUsxMDViVnpGZGQzdnFjMzlpTEF1cURQRVZMWFBGdWVpYWh5OGhueUNMSTR0VGpLa0Z4Z083ajlXZzBndUozRmFGbndTYmJwOGt1clQrcTFhQitQVm11QVcwR20vbHlDQ3dla045UVJVMGtDNGVkQTROQjd5ejR1WTYzaDVLdjJFZ0dmRDBJZ3k3MEhYTkVGQWVieW4xVlBwQU1mNElxcFpHMlZtN1FnV3RCRFIwaUo4N25TVGR4d2VCK3pobmpkQ0JaNXptY1BxYng0REZrOVFNYTJaQ3hraUJ3djZ2WFVWR1FwMlVmTzlHWUc2UnJPenJwQ1l1Mm42cGF0WWRGYmU2S1c2YSt6UWRGQkZObW5QcnRia0YwMFNsREJUMnNNcnBaR1d3ZU1kekpTTEc5amxzVks2R2RSeEpPVkhJeW9NVTY5cGN3Rm5SVVBtanBpTGdPUk1aWjNuSjZDeVZqdWNlWUM4eGpROUdFR0JKT1FoNThuaGo4MVZacW1jZENsdGFUVjJUN2pVNnVDeVJSTTY5eEdwYkxlZEZoZ3FHMVU1Q2V3NUpnak04UkFZd01XSVdLZ0pYT2toWUVRRmNDTVJ5T243c3F2cnJhZVhnV0FQdU9UM2pMalZBTVhON0Juc3lJQjNPQkZtYzdEZVZ6YzlNRTB5OVRiVU1OaGdra0VmYnJ6a28yQ3BaSzFORk1Fc0l6NUVseG1SWnhZV3p5ZlBxYUFkM0FWc0tKWVRldUJIaGQrSW1iZ2ZvakV4VUNZMlNGQ1g5NDRaQ1ZtUUIyQW5PTVlINWNVZkxFaEJLN2Rhd1hNMVU3b0ZLWnJUYWdua2Q0VzdBWTFMSWcvOW8yMWtFaXRoV3NSbGdiRGJRdzZyUXdIcnpBcmY2MEp2SXBvSEZGK2VlNEkrNmd3RzR2RklMeTJzQ3BlVUV1b01HM2ZRYUxoa3AwUG9zUHNjeER4MmZmbElaUlR6U0RvQ1M0SytnWXVBNUVMK2xQOGJHRVJuaFhLSVg2YzZYTlYyNHlEQW1HUzJHaXN4WWRLNllscVBSSkN0RUxoTEdnRGRNMWdIZXpGOFpHWFJYYkZxMmt2OU05eTRBa2l5U2xyUUoyZ0FLQ3g0L3k4ZUd4dDZwdnhtaG10ZW14Qmlaazl4bFBZZWlJVFRZNEFreVF0NmI5aEZ3NHdQS2VwZGNyeVpzZFBqd1pxbUtvV3k0eFJRTWV5RHhrck95STQvWXlzWmJPeFE3OTE1bkp3QldOMWNBRXd5VjY4WXdpNENtOGFDZ0VENkt5Nm1uM1JrWnI0VDkwZndCSm15OVdLQjRnMmpxb0NPY1BlQm13cHdIV1htZVRKUU5hcHhwYXlYQk9pb0o4ODdOZXNxOFo3eFgzS1ZvR1J6cXl1Mi9qOVBGNWRyc0Jld3cxRks2OVp3UVFqUlo4eDJYZG1lMkNKVWZzNnVhRnpVTHlCVVA0MWgxNXNET290WFVPQ05vUjdYYWR3N2wxdjNRSVhkWmVYZmtSalVYT2xvTXp6amVPanp5VURSdDJrT0FoTEo4N1VhNUdnS1QzM2ZFMDlMZG5KREpzN1VHMXdBNENJdnlSUktNRkloc2ozeUZLVldVWlpKLzdPa05lWWtrRVdwQ1FNUnpaVTBvdFFHbWNobjJ3TTF0aU8raTZ2U1ZHZEF2bjY5WWNBbVMyQnBWODRiUWlPdzRhMVRNTlZBK0dtVXdLQWNnUFZ3YmtGRi9RUzdRaGpLbDg5RUdIU3M2M0lHcDFjQkV5SkVYME5GNXZ2elduN2pqRzQ5V1M1SUMwQjNHaHJya20yT0FiNy9CSkNPc00xMENpTDdVS2FBaXBIc3pSVXNoVllqR0JvK2d5Q3E1bXZRRDkzR1RsU0pFaGtGSlZXZGN4eFFVbEllV2E3MThpSXZsUjRXUzIrM01MdmZuTTZmZnZWZW1HMG5FVHJJVU1rKy9Ialo0bDUwV1hJREZQTWsvbk1YKzJhUzhDRmREbkJsVFpFM0ZyUlA4OEZSeURTY1VJNkQ3R0UvdUNXS3hhQzJ6MFNMMW10cS9nV0xoZUJ2M3RoQXpKakNCNUtxejNXdGp2ZHBJekNiaDRQYmJhdmltaXBwV29KQVdHN0JEWnFrNEtZQk5hV1NVY3RWTzVFWmJPNDQ0dWcvRHdCZEgvcmw5K2RUcjlRZ0hIRkdCSHZ2TmtCT3JKV204UkJoOTZFZTRaR3NCdkJadmdyY0YwLzFqb1EwRjBHS0lESUJMQjFQVEFjMkIySFoyYnB6WVR6QTlnWUtqUGV4ZG1Uc1lxZ0tpc013QXBZS2ZESlRpT0U5cnBSQVVTaHZBeUFiOGFzYlIxOFpZMWwwQVVnTlc3VWFQRW1NY1B3MXRoT0FXYTRwQ0VyOThGa3NzZzJDYkM0Vm5sT0IzcUFXd2NGMUYxMC9XZStqVENwb1QvWlM5dHpZazVrUkJhWkhaU0NubjFlOWROdGlMUXhKcmpjMUFPZ2FEOGdMT2FqN3VETzI4R1pYbXE0d1pVVlNkVk0wMEJlK0ZuVVdzQktnZzZiOUdYRTUvYzBBZGZaS2JKVlNiL3piUXoxQ0tGTjkvQ3pDajUxTWFpeEFNeGt1QVFNd0NWb2pqRWt6RGhwcE1DZEFNM3g3eXcxUTZWNmZ2NGVTR2ZlQkNvVldvaTB6L3k1YjAvWDc3Q0NvaDBicXlBS01vcjhCSmY2WVByVXN0QlhEc0pEY0ozSVhQUzNBRElnUEoxNHJyOUYwMVRHMWwzNmJrMmxFVW9VeGpITGRwb1ZhcGRFZTcwWUR6dGtCRmk4TUlYYVRmWVN6ZEtIazZKYUFERUJJaGxrTXNSR096bktxNjlTQ0VTQUx1RDFqQk1veVpER1VJZmF1c05TVDR5Nm8rMm5yTDY4VUFwNGkwYS8vNHQ0UXAySGRpMXVseEdiSytZNHdLVFJNTm1KckFYdC9BaTR2UE9CR2d2cksyUU5VVG9lWm5aWUdpeUd1SzBCQVZEWjYrRXM3Si8zTXovamU4SEZUSmJ6dmpIeGdXeUR3VWk3YUxFTGp4bTZkbTlDdjhSQVQxdUJjdWFBYVlReEdSWXJWRW40Qk5zWFExVm1tdUZQd29NazZ2Q0JnRDRGbDI4dkFONmNtOXROLzd3MU5KcXBtZUk1SGY1TXFuTGFtV1NKQzdoRWI5bDNvMlhuOVhURzFMTHo5V091VnBQZ1V2YUMxd1dnZTljcEx5QnVKWC9HcEk0NTNqZktKRENLM2RqVFZVSzhnMmkvVm1yc1owRG44RTlCSllUUU1jREdnSFBNeEczUHo4NmxteVFzVnFsb2dMSDVaZXQ3eFhDVkhhcXVTdkJ0N2hvOXB4bEdhYnhsK0plTmZTcWhBWXp0UWlnZHBWV2tEd2xOb2IvSkZHMTh5VnJHSFBET0Nsd1dGbUV6T0N2UTA4SlBaaDEwQmhxNENDSnRBQ1RJdkI5dGdDdnhBUUFSQXlMa1p3MnhyRlpCYjk2MGtoQk05SWhlbTh5aEliUU5rQ3hEb0k1WXF6RldTcEFKR2JVTmRWVFRjN0ttUmVvc0JXWGVxQmIyQkh4ZzVBYXVjWTVaemhLaFB5OURnV3U4ODhzUHArdnZmZHM2bG1pcTZxenVYTlNrc1ZhNS9BNHVGOU9INEJJZmkxWURNa1kvZDhrUWM3REJDRTFIRVd3ZUE3VTBKQ0JMd0JXN0pBaWJIdDkxcTY0MXgvV0J4L1JtNVZZL1lCdytIM0xIQU5Rc1c2TzBaL3BJd0RvdytqN1hETlhmQnloMjI2YStNdTJHU2tDbWl2M1VPRVR0Wi9MeHpuWUJpWngrLzNkTy9oVGdyTmYxQlh4VGsyVVB2a3c3TTJlZVl0N0FaUVlxa29EQlhIdHcrZm1ua0dkN0RVTDFFV3VsVHRCbi9RQm9aS2lNb1VOWGlSMVI1Q1NaS2ZaTlIzc21FWHBrTTRJbVFVRElKaFF3c2h6c1VpM0ZiMUF4NVdYSlo0S05TdWNrMDNTL3ZiT2NNaGZQaWQ1WlRoSWZMRVpCRDBZamVEcEx3bjFvSWJTQVBkRjMvZmI1ZFBwbnY4MFRYV2NYMllCUTBFdE5FcUJ5Y0ZrWCtVMXcyVDZ5eEFPejFBdlZza0x6cm9WWjFweGZWbTRXSVU5bWF2NFdUczhpRGM0QUFDQUFTVVJCVk1tdENXRzgrRk5lQTFrNXRLZkdXakpMM1ZOUEtHc1FjTEdQbkc3WkJRMVJCNXlZbEFGQVFpNHR3Qnk3Q24reURWQWJMRVIwUWNUcmF5eU1jeE1CSDRKRm9WN3RraEYrQ3pFd1YzUEZSMFgyNlhUNjU3NEpjVS9RMG9wd0FvQVkyb1ZFNkMxblh6cjgzdjkxUGIyZUtlaE5jNUdoYUp5NkV3K1ErUmhadVVLWWlMYzM2NTc1REVWOGhxQWIxb09RV2dKSUtqN0xBcFVFV2hQem90WDlNa0h2dFN2ZXREKy90V3VPZE52OVhQcDdpNmMweGtOWm81aXFRT1BXUWh2NDhpN1ZkbWhoVWJOU3R6ZUtIbjFmYkhiY0NYdGxYNVVBQ2N4eE1FSmgxKytlVHVjLy8wMWRQZzBIRmc3dFB3VVhhNGhzT2dSN3hTSy9jZUVUWE9mWDY4ZGtLTy9IQWtDOEtWQUJKbFlDQnFPMFVpeU1rZUJCZUl2alpFaU00Mncxd28yZ2o0MDBGRTQwYVNkR3ZGZi9qOXR2TXdBVGZMdy9DSVQydmpKSncxNjNDMm9mZ2s4VDVReHRhaE1NU3lOWWFKTTl3dk5xNFZZMTNyZ1JlQXo2aytlUzRYdzh5cm13QlVIMisxLzc1RjY1bU1GYXpqbzZ2VitFUEZncXhmd2h1TUJVT2Q4UXQwcE96N2Q5R25NbFUrQTRDSjdXdEFlRzA1QXBZRXN3YURqRWpoTVQyc21xUUdtZ1M2ajJpOElySzUrTEkxZGZxdDZjVERJSHFmU1U3SU9NZ0kzSlV2b04xazlQeHFuQnJ0ZW1pQWZXRXVQb2EwMGNWQmxvWk0wQy9rVkhOdVk2S3FpZVQ2ZGZQcDlPdndQZlM2OGZXU3pYamdDNHdGcXV0MmhWdUEweG1PdHlSVmdFVTFIQSs5RGhDdGhudkw2SU1NejVpQVMyLzBUR3dSQlc3M1ZoWDB3aklVMlR3QUcwM2dNR1FDWGp0YjNGeWRGNXhrV2FKTllEWUd5a0xOSHYrbnBmWDE4MDAyQW83alBhc25aWnBPZytqcm1XaW1LNWlrWFg1ZDZhcUo4RjZ3SlIxaXE1NEhCQ2QveGl5em44K2EveXVaa3gwS05URlV3VmZmVnN4Y0hBWlVmclBYQVJWRElYMGNGcFJ5cG1xWUlwd0ZVRHI2Wm9XUlhUY2NjblJtak1HMmZEVXN5WTFiMXZsMG1vYjRtTVFUd0JKcjVKaFV4SGZsenp6aTRZV3RVM3VVdjB5UStCWFl0STE1NGN5SmtjNkVyVUhlUzIzZXlHOVhaNVAvWitFRlU2a25nczJXVmIybk1ITU52ZG43TUdRL2JqWTBDMTlwamdDZ2xrQU11UW1FRGNhUzVtZ3RSWjJMZXpHRW91REluUkVWRkRwd3hGSGdtbkYzcUxOVVhjREFTbGdvZzNpcXFuQk5Kb3phR0drMFBvYWVHTUdnUXZ2akFGK0liQ1NvUjNNUGh3eXZZZVNnbldMR3AzcG1GREFodWI4M3N0RzF3eVQrZ3ZDYmRrMC9UWk9IK1hYS3ZIUTZ6dEVwT0R0dTRGWXhZV3Y0MEp1L2xmZ292aEVIcFlMUWlDVHNKWUYvUUVGeGNVeWZVZ0VOTGdkZG1BK2pwY1k4Q3l0Sk92cTRnWERaYTlnQUxPM1d0QTZkSWcySUMyY0ZOY2sxRkFiN2VDYXBDNUduVFRMcnk4cXFJMEc5Unc1eXZoVjd2Tk1HeUR2YnB3YjhZc1FweUdabUlrZFJkNjBXeXh4OHdpYmNmemZNWU5rMTBaT3kwdzBXVWxvVi93a1RTU2Jyc200alF6akQxV3ZmSHYxNUNJaTM4QUxnRU9pK2JwYjhXWmFDOVhXZ1dwNVJnY2k3VVl3cWdObHlkbEpHQjZieGZaYkM3QjFDQzF3VmNkQWE3ZUFqYjFtYnJNbDREVGJ1Qml1eEtoeFhJUnBaSnB5SkRDSnBXc2lhQlAzU1MyaGVvc2ozQUVMZGlPNE9LWEs3aG1GVUpZekgvVmEzVUV0dCt6NWREbFRYNUdNc0ZtbkJKWUJOa0VWd3A2MTFxM3dZVm9sek9sOCs4bTV0Vis2STlmSVhNR3cvUzZZNFZHRUpEVUc1bW10cy92dE1OY0hicnd0V3lkZ0pudnRKNzJUWGpNQVkzMzVuNzY5REw2VzFyK0dmYkQ5TGZFN1hkdytSY0FnSzY1b0tzRUxEbnRyUWczZXNrR3M3VitONFoxUGYvdm5uMXQzRjV3TEhieUlVRjJtRmtpczBYL3JyaVR5MFJsdHZnb3VHQ01Kck0wSDZzNkhyckhoZGQzVm9LR1dCN2dZT1hVWWhzV1V0dCtGeWhqbDZNaG4remk0OWFuZS9sTEEwQXlaZ3VqTlJkZi9DaTFCV2hMRUl5dGlWREJzMk91Q1M3U0pFOFczYW9ONkZ5MktWbjB3SWFZSlE5Ly9wUE5HaEttd3gwZE9scktQUm9TeVRLM3dtS3Q0ckFwKzZUYlhvdmY4dnRpMzR5TkFZWFVaZ25HNGZBUFpzb2tRY0dtKzhYdnNkN0VEa2FBNEFEU2ZzdTZYVHZ6Y0hwK2I4eExNQkIwTS9TQnd6SlVTcGowUWZlbE40cnBkSEt1QWkxZGVQbDgyaGtnbEFRelQyeE9ZK1BmSTJUdWlKNFJKTit6a1BoTlRFbkwvNkJuWEo2d2ptaHZMaUd4R0dHcnVSSmNhVitFVlYzVEI2c1BIaVFJMzB4V1cxYnJBOWxHNjNxUWNPaDQ5UE9RRnB5U05mVzZnR3dMRnYvT1BUdmw5Z08wYXpoakRGV0ZGSytwUkhFQWdVMlNpWkxhU2ovcGRncXVBRnYzdmpMc2tibnVnYXRSNmRpWFRrUnhZbjVBemZObXRmdjJHM3YyWlA5TXp0VGl3OW5KVkpwTlNpWjFESzRjaEJvdURsc1ZvR01qYmJlWmt5dTh6eDVoamd6SHpDMVd0NGtUY1A5TUhYNkNTNWtOMzFWZ1ZJRWFSOWRBTjRDa2Q2MXV0d0JNUWsxOHBrTG1BakN5MSt4K3lJWGtaRjVqbTJoUjRKckY5QjF6OFRYL3lSQW9yS1hnVCsyMVliVkQ1b3FCckxmdCtVLytIQ1RVc2pHR09URjNlRnJCTGhnQjdHWVBMcVowbklTQksrckR4LzRzWHdVcDBGQmhzWmVHMURpVmFCbWhNNWV0akJSbTJob1VoVzFsYUlLTEVkR3hxZlA2QjdoSVFnMVZ1Q0hrTlpYclJ3Sy9nd3EyNXBBd0VRNFI5Z1JJeW5EKzhGQUNjaWtOcVFrckRyczlFeEw3WHNBVnFDdG1GVkQ3d0lBNkgrQ3RBb2Z0elJiL2MxRXZGd29BcXBhY05DMXJkdlJONXJKcXR0eTV6and4L3RsUkd0OFIxbitCb2svT1lHdXptcDBFZHpCV0FWRVpKOEJmZDFCK040SEMyTzkvQTFoa3FIa0ZHeFBLUGllRnlUVnN6dmRpbXNvZ0NxT2xNNzRCbHpQS0ZPalVYUUt1cUZiSkJJM3h6TWpLR0VPM0pkdE5xNEg3RkdBcHE5MWtMcjMyRmhMOUNTcUNYSVpERHBoOVJ3dUp0NWdMekpCY2NBNmdGZHRWczEreWxRKzJtS3pDYmpIOG5aWFkrRS9EbFNkTFVMV3dwdG1pQTN5V2pycSt5a2tidVJQY0dPMUxEdk9BTWtCekJDaStZNGN6STJTNDNJSEx3NG1DUjYwRkJWZldGRjBiMU95ZlcrRGFySlRqeDdlc1RWR3dTbmtJb3ZBVG1oZGJ3V1VhelZZNzRsUkNzaTF2ZkJxZGFWem0zWjlYcjRWRjZxVWNNbU14T1lZQVNvVVY3OGJnTEI2YXJNSXNBY0RlTnBOTU43eW91ZVFTVDV6bnZ5ekpOTFBCZHFFR1M0Mkx1THVtZW5jbkFXSkVvQW9EWGhxQ29NV2Fackx4d0JmVVNqajdjTWxXRzRhNkJxNG05aTBzWXRFNEsyYnZ3S1hoY0NRYlpNOFc0dlNHMHd0Q0pySHp4SUxMQkZoN0tQeU90ZXd6R2ZiRTV6ci85UHFSK21ZUExySVl3TVV3U1RaaC9aRWhTb0NWckNRbEhvWklOVWJ6WnBLVFBRSlZnVzdHdUxvYmprQjA5UG9Dc0x6ZERSd1JaM2Jnb3VqbCs3ZkFaZHVtM3pYQ29vTUwzbEt4WHFDNWdjdWU0T0dISTJyUmdORG1ZZ3ByaFJnOC9tOG0yR1FBQVZkK25nUEgwQlhoaWJUVjJMQ1lhNEtMQmVkTUFzaGlCK0NhTEtYZ1VqYkRuYUhIcHZxcmNZNllwYnloY2tGZVVEZ25WMnlLaVlmTWZ4UVJWbkNwMUovZ0Vxc2lOUnNFK1lhNWtyc093UVZ3SElHclpaOVlkWkJqS2hyTThlYnNLY2UrYXhLY1VGT0FFVnlZWXNnbEhCeGczSTRNUmJBaDI5ZFEreGk0YkVjNTgwZmQ5d2lUczdZWTR5NzZqR3dHd0RLMFo0RGRnQ2pkK0JIS2E3Vm5Rb1RUTkFaa2xQMDI5K3hEb2ZFR2N3VVFaOVpZMlo1ZjVGd2dMcURGM2RuUFdKUlhhNHoxdmpNUXV5YmdzbFBFczZuUjdZYkFlKzlrWldrb2diZDBiKzhaTEVPSkNGMHVDOCs3VGgzL3p3TlhHYVUrRUE2dU1aT0hMQ1EvaTVIRzV6TnJGWEE2cFFKaXVORUkxQ1JhQ2JOeEJKT0I3WHRtdml6WGIxY3FxbDBzRjVwN1VoMmxqRlloY0E4dXZ1OWg2MHVDUzFZeWREeHhvR1ZoNEVnaWV0KzlIN3ZjSkhzVmo4dVFSaVp1VkhkOThSNUFIT0ZBTHFwOVpzTmFQclNjb0xGb0xsRGpLMmRMeThJaldTKzA3M0JXMDFBcG5JTUZSeXFrZFdEbEV1RmxUQ3dKek9wL3lSTGpOOW1wY3hPUFFkRjBrNzBrMUFrSnBLazRtU3NCcUZhQXpPQkpOeDc3dmNsYzJqL3ZIa1dKK0Z3RFA4VWZNMXFzWk00SnRVdzhlbll5YnFaeEJTWjdLZFVHM2NyRFZpWFRPeWpEN2NIRmpGQzhMYnNyUGlFOHVvY0ZFOVUzMVM0S2hqNldHSnQ5TUFyYTZtY0JWc0ZDQXhpTnZYcUpwNEM3WS91eEgrNzZUc2pVYTZwS3VML2VtZXV0NEFxUUFCalVZUUlFZXFQY3Bucng0M09oclFwWXVVWVl3WlhhRFVlMlh0WTlmMWNaSnQ3WERFWUwyVHVOTm9aZ0R5NkNhRXdKczhtMG1iMnhNMVZvTVMwUHRTdGE5MFNxTE13WXIxR3VmbnhlWVhtUGw2R0JRc285TjBKZm5hOTRYbnFIYnV3ZVA0TFpTanl1c3pKWGhrSU1obzg3d2lKMkJjYXJiRE0wVklFcnRkVG9ib2h0N01FSjRwc05LMktLZUdhY2NUaFpvTlJMc2ErVGVTd2JGN3ViZVBGbXUzN0hGLzhZWEhUaDRYS2Jzc24xdU1CT0laY3FKTVpmZmRKcTFSYjdvbTd4MGJIWUNPNnVGVloxTFNwTWpscmlXd0VtRjJtR3gwZkJsUURUOFJNMjJYVTZjS3dlQWhlOXJ2UFpsazJyQkVDZm91YjZDeVJERTFaWUtoNEJ1R1AxRFVnVU9GTEVUaTJnN0xlSzMrVkxGbkNGNFU2R3FYbUlDUzRBaXAwV1doY012R2huUFJhSWt3TlJMZWczZ0x5Z3M0eXlMRERJVzdWVHN5VjYxZWpnYWdMKzgyTHJ3eGJ3U1IwdzdreHNwYW9QSWg1VklpQWFhREtUc04rN3dXVjFSaFhYQ2E0eGhjMHZsQzFMZnVOU0tGT3BhNTNNaElGTEswT1dOcUtadDI5QzhTL2RnS3ZhWHFKK1dKMnBWY3FSc3RCZ3FnUU16a21aYXpKYm5zUElHSk1QbFJubEdwWE9XanNoRHJSbHU4SngzUWRmYVIxeXNNRk5jT25UenhpRzBpRlFvTUdPU0tHTlp3Uko3VEdkZWdyNnRDcDAyd0V1elJCbGJWWS9acTFCM3NLWW1xQUVuTjdGZ2RQdXhCNWtpUG8xQWE1LzRWY3Y1OWR3NkoxNXNoNU01Z28yY25CQlk5a2dGbWhuVjBQL3U1WURyMHh5TXRoaVNmQW9Od0RyalB6bEFPYjd4VWs5ekZ6aitZNDlGS3FtMm9PckpBMGYzd0xHb2NZQ3dOaGs2S1VmR2VqNCt1NmhNWXdwMDk3a3I4bFUvSHZlcVdTd29WbVA5cjJBeStmNFQzQWhHK3hGYU9tZTJNMEVrZ1Bic2hmb3FjNExtYVNFTEFWUnV2Z3pUT0pPbUxycEhvUGw5b1BCaU9VY2RIVzY1ZGdxRFBhbXdxbXpzaVFFQ09SKzdlbG1vemdkMFU2ZUVjUy94WFNsc0E5bTZyMWlRVloxa0pwUmR1cWVWNHMzRlY0L0FoZkphL1B4SGNBK0MxektQbTVIU0FkTURGSWNoU1lDR2ZMVWtFMlc2Z0JyNTRCUjUydjZIcC9YdUR2bld5RGJBVXozNGNNMEYyS1RxeGdFMGhzSloxOThab0Z2QUpmdDFoL1NMbUR6YnpHOUpROFhqYThQd1I0NUpXTXVETnhiSUpnWFJ0bnJGcmh1VW1CLzgwRndSYmljek9YSHdCT1FUdEppelZFcUttUWhtOTAwQ2M1dUNUMWVLUi9Kcms2M3dLVzQzVjJYV3dCN0Q3amFvaUxzNDVMQlQyZmdBZVlLOEliZVNsYmpNN1pCWFRHSFVjQWtycm9QaVhScExPYy9BZWJrZ0N1UzdUQVAwdFRtNHQ0R2w3R1JyUndYVjlrWmlOOGZBSW92dG1NTUk1a1RYK09iOEs3L29zdUtWMWRxZmI1T29RQ3BBTXBqMXhZZXZCaWt0bXF2aGt1bTBlTmF0VDlaYWNBSEc3ZzJHZjJPdVI0Rmw2Vjh4a1pzYmRkYVlnS0o0RXFuWHgvbUx1VWxZYmxtTyt3c2lDcW9ZSkRrQ2t4d2NYRGZ3RmE2Nlgxd1pab3U0Tkk2b1R2MUhBMmRuempCSmFxSjdqMGcyQmhRWHBPTzJYWjZTKzlYcTBRYzU4WXBuNHBhNVNhUXI4QktQbmZCTlRORmdLSDBHRUxWaHJrNnVLTFZSa0VWNVNMb0x6d0QwdDczY0FrcmdwcUtud09aaWE5MWdDNGp4SjNEL29WRDQrdDFaSXROMEhPaE4raWQ2RXF0OW1TdjhvRVJvZ3lrRHI2YXdBRzZ0bm9nYnBqWkJwMWhUSHlYU2N4eE9NbUxEU0RLWXNzTkp6Wk5mdWpBZkxVSkl4Nk0yQ09Wam4zdHRUMkVQYlAxUGd1SDNhc1RPTjdYUmViS2Rwb1M4dzRrK21RQWwrdXQ5Q3NLa01tV0liektNcGpZeWdzWnYyd0Ixa1BUY2R2dUEyeDIwNHB3a1c2Q0hGOFl4cWwybG9LTkNEQ3lUallGRHV0aGFxWWNXRjFUb281YXcrNDhGd0pNZ2NmZmJ3RnNydHJJVXNZdFplRmo5R2NCTHRWV21TRldlMDdhRUFCWXNCMkV2eHFkQ2JKeDFkb0Y4anUwQUtZZEF2eDlsb0llQUZTMEFRVzd4ck4vRG53dWg0NXRKTllFMlNzT0RVeUZPeVNQcjAzUkx5N0NaQ0ZWWTMyQ0IzZUtqeWczN1pLYndMS0FYVDkzTUx2YVA3S0pGcjcvSTRUUnFCekhONWxyV1NFUTdKVFpuSURIbVF1emVxbzFwNFE3MStYeThBaHZLMEppUE5RK1E2SWRzMnV5Zy9XZmRvQVk0UytYQks5QmpVOXBDNDRMNnh2b1F1VFM3dGc5dU9SQ1czakFaQjBQaUdRdkRsSU1lbzFLbEkvaXRhbWxvb1MwQ1duYVJIZ0FzUEUxR2RYeW0wWjR1eGtlandDV0YzZGN4UFNUZEUydnpWeEc3WHYzdUZQR2FRdUxFT0E3Y0lYbFVLM1FDUzVyYlFiUWZOZFN2SFpnNWFUWFNBL25qR3hkeUNVdkhpNXFoc2ZHV0UwWVk0anhHa0hHWVljR25OQTdCaGN1ZEM2d2kvMjJTUnJKV01mZ0FybmdmQVJ3b3BtS2thVXVpVjBXazQ4WFZNVHphZ25BU2w3c0JmNk92UkxYazhVT3dBWDgrTGRINkt6SDdWSDZsTThsY3hJUHdLWDF4dXc4dlZ5aUkrS0p6OHBHbnowRWZ3QU53NHB3aE9TK2ozVnFZNkZubnFjL0tVTjhwYW03Sm1vVVZEZklySU5MdXhyc1lLU3VTT1p3Y0ZGN3RYQ0lJRVlNYlBSVk1DMEFoQk1ZRE4wV2xKdlpZa0p2eFZtRU9qWTJMaEZ1VTVtK3hWNjhZTVNsUGs4eEw2eXU5M2NmWE5rMlErTVRtb3BGYUdNbHJ1RkZzZSt2R1dNWmFKa3gxaktGOExlbzRXR21Ib1YybmhPVHJycHJQZFEwOWxxQWRnTkJYeHhjbkcyZDA4a3FscFh1NmdXYllseVpERHYwa29iVFBPYUZqVHF5OUJvNWZld0FwalN1V214bWovalNOajcyaDNoY3RkVGxBSmMyN2tIVFVtNnpGcGd1Z2pJWDJLWTNBMExFbXhmbXdMb1V1Q0tORExha1NldXNHUWRmeWFLYzlHUmlpcFprcm1DdE43SFhQYnlaVmorcm9FZDR5U1VjdEpzVStFbm1BcTMwNmZiRlhtUTZiY0JodWFndGRLTGhrYUg0b0JNMTN1NjBya0R3M3duOHlWNHFSbVU5ODYyNDMxdzRmanlYcVd3cmxWWk5MN2ZES0pjY1ljTmYyUW1HQjVaNUdCS3B6ZnoxSjdqems3bEdUZElQRjR3Mm16M2FxV2k5VGhrTVVjVFphK3F1Q0Rkdit3OUFYOEtpdStrY1FCaWs2VVZwblpCdHpnZWhVWmNBNEpHUmJYVi9PVnRiV0dNbUNRNnFSbGg3Z0NXNDVDSTJGbW9BRTFkL2x6Mk95OW5CdFZrQkJ4TW1GbkNSOWFTN2dabmVGbHdVODJBc0Q0dk1HTkVCa1V4S2pVYzIwNmVCSEliSDFzNVMvWFFZbkdRdkRZMlBBQ3hQdkM3Y0l1aURrT0MwYzhsS2hpKzNKY0FkT3NOYUJqK2JCelZrRG5hYURZWDV5THkwTnlyTUtqQzdCcXVyMTRFWG4vQ2puQWJwTHBXKzZtcGtkV0htMkRSd21adUpEZkwxUjhFbFdaNVBDNFJuNWNSRHM5VEFSTllpdUpncE9yVlZ5N090NWRBQXZldXpVY2JpS2JLSGpoZnBIbnR4U0hZWFpuZGRnL0M2ejNVZlhHV2NwdDdSZG1VTlM5UTB1QXU0dmRvWkNTTjV1bGt4bFFCSVVEWmZ6YitiUHFzUTNVam80RUt3K0szYjZuVnNONmFsWndvdTBUN1VQRkJGT1orVUhwaE94WCtTaVJadVM5aCtLTndkWEJjSEdTZHpaRmVwdEQrN0VpRGdiaHBSV2JNVGF1RTF3c25rd3dycTcyUHo3MTZrUEovaXFXVmlvc2JBQ25ONTlCQzJZaGxIeEhCTmpHVUpDT2FtQ3VZaHRPZURwQnpVMHhDbGNKT1FxU0dTSE9XdnVaanZsMkxyOEIrQnkzZldkN0M5U2FVNU1FdERFMXd5dVlOZEVMZkF4YkRudXN0RVBKbnI2WklUTEN3OCtuOERXR1F4Zit2ZWVDZjdVR09RM2RObjZzTGVTV0dOSXZlL0pvN2tBRnpsdktkT2drTnJmM05pUmpJWFJwejFSUUlnQjFlb21NY2IrKzBjRkM0NXJBNWhLaW1CKzZ2OWZISDNVZnVKK01RNzYvVzVDYkRTWXZPeWh0aVd1ZkdiNTJUN3JvL0FsVlBJSXBTUnhSeFFaS3kwSHk3SUZLbTVxcXlTZ1ZETFAwZkltbmRJRFU1Y1lWbjFNV3A5STJ0OEU4RGtJRHhiZE9iNm15L24xMU11Uk9MN3cvUXlmcjhEQVV3VTRYbFRkcEhQS0hoYTJBS2dxbDJJRUNCb2RndkI5ZS9iQVV5elBtMWFaQW1MTmNTODYrNksrR0N4SlRUcXdyenlrQUpkOU0zWnhEOG8wL3ZabHlWNktRRkZ0a3Jyd2NCMmNZL0w5d1hnS1V0Rnd3QU4xWFZLd0paZDlHU293elQ1c2QrUk1hNjJSTHZieCs0N3FFaWgrVEJQblhHOWdFdFl4c0dOWFUvbW9WN1RPMzRSN3ppWkJOY0dxTFdHbDV3RDZLcXhaYU9XbXBmbzIwaFhiQUlzdzRMc2Q0Q3MzK2dkWUtHVlpkVm5QTTBpd2lOVVZrN3pFbkJCWkNkVFFXdGxHRnpBRmNDS0x0Tmd0UjJ3QW5oeExtM1ZHNzJiSjhwdUFNeXYrMDdZeS9YY2dqWk9GUWRTVzlTVFlqKzlmdXgxeXFvanhjU05DbU1LakhXSm8yS2lITXNSL21nLzlKYWk4VG5SYUhtNEc3YjA5M0RCZkYxVkRac3E4RGV6ZlpLV2JnSXNycXdUdC9adjJWZXhMS1N0MEErRDYzeDZnbi9WR014ZWUwSklSTmtuRWtwcUxveWtscVNPWm1Ma25UaGlvLzZaS3dQVzJtdGI5bExpd3JubnVCeG1pM3lZNXkxdzBTSUF5elRXa1Y3NC9QNWR5Sno2YW1TSHNlc1JhamNBbzhYUVNJdGlYZ0JFWFpZMmhWK0F6VVhtUzNLQnRqTEY1S2thcDd6QUhnTEZEcEFKcXRvTjRadzNtdjdDZlMrajFQOEdzSnl0MUR4dGZnTklRbWYrSEZJSzNnaWRVbHNwOER3YzRjYk1jTW5IM08ydXhyMHZDMzBZRHYwZi9Pcmw4aWk0MUVqTjQ1YVNUakpIRitZeDJNVXNETDJkcFE5MDNEaVh4Y1BpaFVjdHRNRW91elNxWFh1NU5INHdQZDI2ZFVrVHA2dzV5dm9NaVFFODRjTHdubFlDOVpiTm9CYmdHSkQ0ei8wdEsxSm5nNkFzcmNUVTB3Nk9mcGswS1JhRkh3eitMWURsK3FTSVVEdnQ5UUNtV3N2TkliaTRvMm1rSXUwM00zVXlKUlZ3M2hSenl0bk9USjAzMDhnVy9XMzVMZ2VPaTltK0ZBQmovcTQrR1ZtbzluRnRvRU9BSWVyY0JSZTI4eDg3Y0lHMndvS3F4VU5VWjVHMVdEK2t6bkloYjRJZW5hY2g5Y1o2WEg0TllFM2N5aFNWclRoZ3VyWVc3OFRRUFhHZGhMMldtdU1Sd0Vab2RpbDFPUXFMQ2k3NmJ3VEhiR2ZHaWZxQWpGbEFkT3duUXhFenV6QzNKQUVEWU5vTG4wa0ZyWWlrcmNHQ09JQitTMnl1bExEWUVjRDhxMUlDb1JVNlVFUlpMNHZEb0FFdzNmZkkvcDVRakc1Z2V4YjdJWmtOeWNJSWk5by9mNWRRZG93MXl4b0p1QW13K1B0bXpWSU93TWNHRitnMzk5eEJXTnlCUzRyVmkwY0Zob3U3cWNKa1picGowUkdaS1RRQk5zTmVEckt5SmNIRUN6YzEwMno1Y1lEdXVsQ1BXZXlvNTJzTEx1MUtZR0ZaUTZKSHVtQ3dESUgwdE02WDA1TmxoNmEzM0g2QUZodlR5SHpROE9WVDMvdHczWk5IV2daU3dQR0dJdUJjNjRxeEtwSm1CN0s4VHJ3d09NNjNnWXZoQ0NmU3d0OEJjNUJ0NHlPVnZzWDU2QVBYWTIvOS9EZjF3YmtTb1p5NGhtbTFSZHAxbi9YR0Z0d0hCeHhzcXhIQTF4N1Z6TTFaRFRxSnkwK3F4K1dzRlcwMFh2SmhlZWY1RXErYksyK2dFdkhmMXNqUzFoNXBCVHBrcndtNEJWU2pwMG5ESThkTEpjTVd3WEpuNXczZ04vSU41aUlDR1k1bEgxN3VkWmFxRzJibmFTVUFVMWdYaURqb3RaYUVoTElXeG9hKzJsa1MwKzdJL0FIZnA5UjllSmV2dDc2L01sNHVjS0h6VkpzSlJXdDVneUE4cXFnZGtwRmdraHFic1ZjTHJGV05nYkFmdFBPQndOSVFmSlZIQnVjNWJucGt1aTZSUVp0M05CbUw0elQweEk0ZEJWQitDRmtPdXdhNHpFUjFvSnp0cVFsNlBaSDEyZkVxa0dpc3p0ZUVTUXBZQXpRcTdObUZ3VUhVdnlWN25sMm95b1I1dnJMZlpER2dZM2NENzBQSmJZQjEzVG9YQUttZStiaklBQlJOMDh3S28va3Z3bU1VcCtuSUsydHBVNkIyTEliZVdoL2h0NUN3bjhwU0Q0dk5ORVFzQXI4RExEYS9GM01WVkRpU0M4REZoM25tR0ZORGVYWTIySWJ0TkhKWEI5c09scGlabjA3VnoyZi9zT0pRQngvWjNTckkyOTQxWkkwbEFOYlBydXkxRUZLN2R2MUM2bDlGM3ZGYjB6NytOd0ZYR1dMcXJHU3VFTzcrejUzNHkrbnlySzNNY09lVkJVVFF0eFY0RXUyRFlmTHVJdk8ya2dVQUppQTdFdmd6VTFlUWFWS2pjZG5CNzI4aUxOckRQQ1hNdFRDTDlEL0I0K0N5T1NkMVF0V1JPb1M3TUVmODJucEowL2xYbHN1Qmw2cEF2ZDhSbmE4TFk5Ym5PNmptM2JmY2l3Y0FPd1NYdGo4RFdBRTQ2REJhRUJEenprN0NXR1U5UU1obm56eW5qcWt6TDlwdXpQVFdjVzNzTlUzVFhuU05UZHVTM3dPZ0k0UGNmZzlmSE5tc3YzeDVCRnhrcXBHUkJRQ25TRjg5cU1scUJKbXl4K0tiS1FzS3lQS0dCR2dWVXdtbGNZMldHdWc0NXVXaWJVREdsOEJYOFJHQUs1S2ttbk5JU3N0MVRPSENheGlrcUxlUStFUVJqem1KMFY2allDSkZXQXRPZnZYYVk3UGNMV0F0QlprVDJHQ3hSd0RtWC90QWhvTnJFVm10aGtWbExvWkZpbnFhbHhnSkQ5a091Z0V1SFZpYWNtVG1vYWNDR01VdXMyQTltVTZYdUN4UXJVbUFPdFdURVJYUTJjcXpHNVJFY2Z6Q2I5RmxpdXBtbFZCSW9FSFVHc2s0WTlHQ1FCaE1oOTY4cmRZUWlJVjRiZWZadFZvUFUyaisyaUdWYkVKazNPRmdxdzNBaG5GS0xNWFB3eFM3am1ESFhJZmdJaURnMzNnWTFOcGRnb3RvcXdId2JmTnUwV1V3Y3ppWE1wYzJIRzU5cnNaa0hkQ0w3WkJnT1c3ZjZTQVQrTndDMmhoTW5YMmpXaXR2WGdDSzRqMk5VOHNNamVsZ21xYTNoZGJtYVBZaVlERUFtWkV5NUlJNmQvWFNkcHdER0kybEJvUGRBcGp1azJOckZ3Q0UxTDR5Z1hiRVhHU3E5Sy9pRnk2bmxNd1ZNYUZLQjVLNWQxYmJnMHlaTnNOblhnOHhZNU14WmZTbkpoc1pUV25ValYrVzkwUy8rRTJsM1FJYW1XbjJzTk5BSmJERU5JM3dON0xFNXdoMTdtKzU0SWNZWmpZb2EwQndpcHFvazBQdTZpSHNTRXZaWUQwQXNQVk8zSC92UERBK1FXT2JMZkxtOEYzRk0zYmFpc3RMMXRqQlVHTXpIdnFKZ3kwc3lHTmZjQ2RHeGlnaFNiMCswVnRrN1o0b2REREY5elRZYkJva0Jodm01ZXRnVG9kY0JYd21SN0tHUTdyeDBRMWh4V2dWOUdTdDlMVmdSNFFMSDBacS9NZXNZYlU5RHBFMU5hTXdlUklkdzZUL1BBQVlMOXZPaHRneEZnOG9GeDA3RXZRMkI4RjNFQ2UzZ0lvRHovZnNiMW5MUzBPOEJKMjJqa1FCbzRaK3U3WTl3SkZNcEJjckdRMUFiQm5TdnI1WUFUenBDK1RicWVySTJpRlphL2NwcCsyN3NKZnVoN0lja0NtbVdWb1pvbXN1WXk3SEVxZnRFN0VhQmhOdVdHM3ZnUmkrQU91QXhXcTFHZDdSYTR2TzRRWFJMRU1nbnc0OXJRZ0Q4bE1NdGowV2x6TjVKN2pzQ3BKY09JU09SU01BOGJBU1FFeGNrcG1VMTNBZUZQeHlRU2FnTWdFWWQyZXphZVFpQkM0SGErMUM3TUZydSt1WldpdEpwV2VLMldKek9YbUJPbGdyUEswMFRRMU01bTFoTWtZc0xBSmd0VVZGQnFDcVpuNUlYRTNRY2l1eTk0N0ZzbUhRTnA2elhCNFE4M29rNVhFWkdEWStsOCtjd3FQbXFMbjBKMjdkakZ6YUpaRlVDamJTYkpEaFVMS3ZHUHNhZk5keVFuc0VCNjhKMzF2SmE3KythZ1hFMVdOVDRQZWFoR1JXL2RleUFySVVzd0tMTGNrR0tOTlpHUTZmSXp5Njd2b0FqY1cxSVBqd0hvVFR6QXBIS3d0dGp3VlpSNnpTbUZ5UTFpNm9tcW1iTUtuaDBRNkFuK1h2T2NWcEhOVUNMZ0xMTTVaaVJuK1FkbWFPbTFKUVJwaWEwZHR2a25Yd3B4WlNWcXBrVTYwR1lhRHBmV2tTTUtQRmJoSGZLZjQ3Q3YxczV2R3JuelVuWCtSN2IydS9Cd0FBRUw5SlJFRlVESW53dGh4Y0NJWGV0MlVab29sNHR0VEFob2o5b1NNQ2QzK09uWWZMdUxzZkUvUGpqdWgza1JhRHFTVUtGV3dhM0JtdXgxelozOG1Ebk14RmNIbldVcUV4THpSQmgxUE5ySEdHbnZsY254RjJtUFZ5RkRPMEVpVHo4N3Ivc2JxaGhvR1pJYmFvTUV6QUFzOCtiRTZMSXdhM05GQURHN1dXdlkrTU1GZ0xZaDRkcGc0dXNoV0J4Y3hRSnNrR25nYVVKRE45bkxuYWJYSmJSL0hpN2V5S3NadjIvVHZFdTNaa3N5QTExd1JYZGNCNVVidDZpbWlpamh0QlZoVnN3aG1nS1RZZW5RNWs1aFpHNjBNYy9xbXRXbmhzQUpSdkZ5YTdCNmhkZ1ZhalFMSkhPdko0UlV4VHJ4V2lJZEIxRmtYOFlLM29tS0JCdXJKV1VWV04zaGRoTG1XeXFjSDBBcmZmN1VPM1ZpUnByU0dCdmV4RVBRSlgxaHVpV3lKUEdGbmkwYkZrdzc4RUdOV1VESWw4amVlck1qL1lEYStJemp5YWNSUmZOY0t2ZmdIdXZoNDFWNURuVFhxZzVqMXFCYlhRbWNnK2VYc2hSRHp0aC9QcDZmbHlPbG0vbG9aRHJ5UDYzUjJYZEdHdGhIRlZ4eGU2V2w4NDc0NTV2amF6cERwaEN1WGVralBMUGxOMktDNXdYUUpjMDRwb3pBVlJEMk12OTBudEJXMlEraHNEeXhWdVdsakJJR2NTa0V6RkN6VGJjcEN4NW9sMUU5Wmhod09hYkJRWWc5ZWxBbFNBTmhNQy8zczhMR2xlUXc1M016UEZkbkNTVjhhNlhFNVBKdHc5RkVweDJ2VVlnTlc2S0ViYnlneUxncmVFMWU0Z3lRRkhvR3JNdGFIMUVyeUxIM2l2VnpESko3S2FrUzBDWEM3bWM3VXl5UjUxTmp0UzVncDFXZ0xDR1JyanlFZ211Q2JEWVBQSmFJMjl5R1NweTZxMjJhNXgwMlRqNnV2QjBoVE8xOFlrRHZtZThqS2pRWkFBWTJhb2krSm1obWpaNFllbkFOenp4YTluVEMrck5TRFlsOFVIUkpIRkVqeExISnd2Yk5DMWVha3gybzY1R3VEcWhtOVpqYnhjSU9LTGNseHdFOWFXR3dNVmpWT2ZPeGUzaTRNaTR3R0FCd3BNTVM0TmhTMFQxSnNENlBJV1oyV2VrUkMwMERjeXcvVzk0UFgxUm8wdjJER2J2dEdiZ0xybW5ZRkhRMklDQzllcjZTd0xneCtlZkFFM0F4dW5pckc5R1U1cmhWZXV2VldKSWZrbmZ0NFNXd3VZTm13MDJlemhVRGtRZFVUbjh3RGpRazNtQ2tCNXh3TmFRSHlBMHFVL242eXpWdWVuY1FCYnBxYURLbUVxdHlWVDBYQnRBQlJRekdYSE42ekVhS2VBYmpKaE5oUHFYU3JvYVo4ZngxK3lvcHE0YUphMmNHZ3M5ZUZ5ZXZycUtiSkcrRm94TFIvZUZpeUhZTVBaR0VnVVREVGRrL0lIREMwOWQzcWpMTnJNUThUY3gyT3N1QVcvVS92c1JJV2ZaUlFlVElYeUQxbUtvT010akhQMjQ4bzVqbkVhc1hoSmJPQUxtNEF1SkFvVmUvWFlpZ3BCblZ6cm1wQ0xFTURhdDFHdk92VEFiWjc3eTVzMTl0dkVPNjVEWEJyWUV2QzBuazJ3UHdWanVmc09jRVZKQ09hcEFpdFcyMjMzYWJjZkhwbUJvWGVId21leTE1N050dUZTenI4eDl5NVo0QVliMitSMGZoWG1FcXZCOVZZQ0xFQVcvVnM0NFF5WFBmVE1jSzdZYjZFU0ZJWkpUSGtPdFI0dUJEbERwMzlZMThRWEFKTmxGQ1MrK1F5TGhIZCtlYnQyZFUzWE81WUFDMndoUzNUOUZQMWFZWmFHODM1NU50WTZCV3NSV096Wjh0YWxXSGNpMjVVRnNOb3IzdzV1RHQ2dGdjNFRXWDVaczBFUzVUM1d1dmQ5TzNBMTVpSzRoTFd1WEhSTXRSZ0ZXNXZJMGYwdURxdXlWTklBQVNNMVNOVkZtcXlrbGxKekZheW81OXRtSG0xQXRiUTROL3lzZDdXK25RRXAyMno0bk1PWWdHR2dlbm9PdHFLQVoydU5QV1E2QUJnK1Z0Z1h1cFk4UjdmV20zRG95MkRkQzRoMzJXV2VhMTNzK3Foc3N3MloyOXR3dkxoa3R4b1dKN2dNWkpveDR2ZGtMOUVsZWpIVWJRZEhvTU5DS2J3TGV1cW14amJpRkxjR3dxYkRScC9ZdU1PMm9OcUZRVjVjbHdxVHVlaEZkVC9LZ1dYQzNSaktHVXZLT3M1cUFTeGY2anNsUnMzQUpndm1WZGxZRHpzM1lobm5qVFNxVUhDa213N0M1bWJ6clhkMkFMYUdnMjFZSkhNcHVBZ3NoRWZmTnpvakNLQzZTSlBGUXJtSWdvb05kSWFST3Z0QVdvNXhMZzViK3FxMVJLdEYwY0pvdndJenkvUjM3WHVWR2phNEFyU2tsU2FZeThKZUFndkN2ZFl3ZmFyMVRIR3RRbnRoYjdLUVNCZGRsUmo2VFp5YUQrZHlDMGh4UXJIaDBYWkwrTVBHZDVqOEVlTFM4Y2RlTjVvcndYWHg5cHNvK1hRTnRyRFhqUkNwNXpyUE9jTW1OTkkyNDdNWDZkRFBiSEh4dnNSWUdESDVNSXcyUXEwamRDRHdlVTBBUlN4ekZOUEJIRmd1NHJINnNoZWpqYTFrbWhpcEo3c2RwS0ZRUjZ6SFhnSFZ1TERiVVY3RGVtMTJQNG5wWUR6YTExMVVsMS9DSks5MVJVaFlkRmJ5MVZiRTB4S0IzMndLdlZtRUJScHdjRFA1YXg1NmVQbzdaNTQxeGRpb1FxWmtodkMrdUVWUEpLUVR0ZnlSdktQbkJOczZ6bjRCNDNMVWhBbDJNbmd4R3BsaEFBMldBMXgzNnF1eUttb0NoNTkrOXNmekdraFdhTCtTU2g4Ulc0ZGpmc0JnTzJHK2ZVMVIvQVpnSmRWNityVm5MczhVc1NabjZDNVlFdlM0N0gyOTQzZXNUUnNpTE03VVhjdm5CSVV6MjNSb3pmWWFKQUsxN2V5UkYwTlZtQzJRMnUvTUJLNDhtMFBEWUhmZ3dVanNiQUNEV2VibmEycUJuWloxSHJZbEh2RUsvV1liSGFlUEFHdXkyRzVBY3BzZDJHNkUwSHZaNGIwNDZmTHBRTkNiczZ4MmhGMHdPdlFFVzF2azFvNVROQmg1dlhXd3l0ajI2OUJQMHM5TFZ4V1VBbmFHVGJaOUF4MTFMWTZCMWE5WER4ZlVZMm81Wk11eUxNVG1qMHl4Y09qV1FwUjI0dmRvVTY3RmNYWG1OVzVuZWRSd0dkcEFVZjhSUS9lSW1xKzdZei9jVFJwczJLaVIwZzJ3M1FQVDV2MFZYUDdNa05CWENUQm9MZ2VLK0YvdHVLYTQ1OSs3TUFtUStiTUNjbTZBbnBoTTlMQ1hlUUcxYllkSUdRNS9iSXBnT1Q2blZMdXNQZUUzaDQ3cGVMNjBTd1JPd1VjNXg3UEFjdDBUV0FCR09qYjVJQ2l5MHdaSkZQcHprSFlBdXdlb1ZCd0g0V3dMdU03by9UQmtiRlRTOEhlZXFIN0l6ZllaRmhOWUFhUU1pZXlNUUwzUkZ5eHBPMFBZSkNGUTFLV3NpQmNDSy9pa0MrYmpGaGtGaW44MjJVckJrMWV5RWlVc3VaalhjQW1GQjNkb2dtczh0WUl6ZVJ4Z1lLc1U3UVFYV25CU3dJODJHcmJDVVNyTXhyK2pSa0FGMTF0QzFSRUE3K21yTFI0UFFOb1F1TVp4WWE3VHh4VHYwRnEyYm1MV0VRMWNGaXBadmtBTGRKYUl3UHlwZzBSdk1VUkdGVHlldFhPbFBRM0UrR1FRSjUzZWtMYjRWTTJXSUo0a3hPbEZ0WmZub3IxTDhsU1V4YVRZd3lHWDUyWTdzdi85Rkl1em9SNFlUcjBZb3BvWmVvaGsrYXdMK3FWbCtZaTE5TVo4QzdDbXRtelJjQU9VUXlBT0d1V2w0aTRhYzhtMmE3WjQrbml5V1Q5Mm9nZ0JhVCs0SFZFQ1AxOW54RkxRWmppOFZOMXcwR2JUWVdwbytyUWhZVVFDcjUyak1KMHllZmNadGo1UDdHN3RubWpoQ3dnck80RXpjbUNRTXVTaGZCTytWUzBjTXIyczJCd0pVWUlGN2RLRDFkK2o0UStsMEtOWjRhMFFtbUI2aExsd0k0bThxR3p4Sk16RjBNaXd5RkRJckZHYkIxRnZoQ1dVYmJ0K09BWTBmRmtlWG1PMHphSnVMV0laeTgzNEdsZWpUdmYxZEgyMWJZTHhkaDVoT3N6dEdzbFZTSFN4NW5mRm12TXNURTlnSVd0a25WVzZTTlVrYlF5bE41aUd3SjJRTDZvL3hNNjhDdVArV3o5M2ovbHV2Wi92cWVBNk9yU3lWWHBZTk9ZU1lLVWRRWGRlMzB0dlR6MmFTd3g2NmdwY2d0UU5wY3ZBSVhRYWNLVFFVdnhyUEFValR5ZEJzaHFtY1IzNFFiSmdoZHFNQUhuWXBwbnNWU3dYS1lCaGVGelgzSkt3MlV4U1Ava0lxWGtaRkQzRGJwQWVxSzdiOWZOeHcwQ2VaZ0lacjVYMjFQZGI4VCtaNlI1Tzc3QVREMkozQnc4R3JxK2tvRDlpTGl3QUc5bWo5SGhCTStYaUpOSVBuZ0NUTGdvRm5SN2ZyRVB5anVTcE5pL3I2UG93T3h3VVB5OFhMN3BPbFM5c3RGVFJSNU1QSlNCU09JSFZuNUVveGVWYzR5SGJaN1NOQmwwUU9MYWxwU1pmWDAvdUVTZENQMlhucHhsNGd1OXdYb1hxaWp2Z2U4ZmJ4VndLTG1vdUN2b1dKbUZIbk1GU3ZFVWxTL0k2SWszWHhtUmRWWFR6dkxQV2JKZVpZSXZSSGZBWmYvY29pTjRzRmM4NmVueWRRbDduRWNvRENRSm9lYXZXNGlIVVZzRmRyVjVaZ09xOVc3V1h2YWYxVm5CdFoxb2p5eWJvNWo3VE4xU0dhOUh2bnQ2YW9iTEcrSHJaTVJjVzJVOHJRcjB2MTJFaGNvdWhHR1BxN3ErWlFpRm1ZMXYwZzhsZG9DM0dkcUs3VTBsZ0NUTTFIQjNvQlg2T21vc1YrNUkvT040c3g4anNhUWg3bjJOWURmVHNITXl3VnlGUWJod1pRV1dxWlI3aXdscjk1cnNQcm5jd3p6M3QxYWl3L2ppS2lnekh3aUh4SVhzazNwVU8vV1F1SzJmUWVoamdPajBaYXlFMEtIT3AxaEl0MGpXWVpJTnlMUlZVQ1RJL284N0hxWm5VTDJ0SndNSFYwUjJoWnBnWEpBVjJtbEZ3MnBIcDZaWFRKWlBVSEUwYXFodHNabjhGbG5ySGY5TVZiZDRjZnVMazd6K0U0QjFBM0VXSGU4Y25kOFJyMWhZQnJuVGxqOEQxRkYyV3pBVFQ5NXJBR3VBaWMybEpZL2NRQWQvZmJGdGU4RklYYXRGVmZrR0U0NVZGSktaVmppRVFRR2RwRnB6SDdkZ3l3V1NkRFdNdDNjazF2M0hlTFpycjNCdTN3L2Z2UmE3MndVZkJpQXRwbXpQeThWUXpKT0NGUmdKMVBSYm1jbGF5c0ppNkMvcEpkSmdEVUdzbDJlT0ZiSkQ2eFY4dk5taUc2N2hTMm1TVytKQmpGN2pFcjJLbTNrMlFLdzcyMWlrZW0rb2x2U2tBcmtYMFQyQTFEVFlob01EcTcyMEIvZ2pDT09CNW9kNkVydlViUHZQalI0ZmNOUmNBMU1ERjBFaHdlZldmbWt2TXdRR2tIRVc3Z3RraUxhRjBNV0Qza3hGbWxobE12YjhheTh1TVVIa2p4R1hZcmNGQVVzczF0Mm9CTTd3bG9ZemVudThNK3h6Zm9SYzhzRDJENUh4cGYvNTNzYVlzbmN6OERyU28zcmo3cFhjMllCVExkZWd0TEM3Z010M2xEd3FNcHNFTFFtSThUa3RNVWhTNjAzckFoY29XNmVvZnIvSlFHNWxWeU10Z1RGYTdkKzZjZGRTR2MvUEhIUFREMWZ6a1VQbmRUYWdYTXBkRHV3K3NPckNqWncwZG5lL3lmRkx2QmRPdDN3RXlmdndoNFQvakpDNFVJMDRXcm5mZ2d1NnFyREZFUG9GVlB6bVJWa0JrWHdBQVppZXIyQlhLU0dVQWc5bm1YUzVoWjVkUDFpV1VBT25hVFpsbGNNbW95TXhaTjhlZ0dHTDhpSlVPWGs5eUtaVGV1MWVPMzU4QTRIVjdDQmkzdi9aZWdxQTNnbTdiYnBCRDVucU9aLzQ1bUdCTlpOM1JReDFYTlpGR1FvSkpacnJVM01mb05LZ3ZoejRiZzlCWWlscHBqU2h5WlFKUTdYb3lpOXRkdnh2NS9iRlZzQXRwKzRNNjJrY2V5dnpZZmIvaE5yaU9QdjhGQUhiNHhlcEwyRWJ6Nzd4eDFPZlNzR2pnd2pSMEFpejhyYWl6WlZnVXdaNU0xU2JVZHFacnlHNFpKVGxKUERQU2F5T2RtMGhyUHRSaE9MbkZHcW1oMWxqWUNIU1p2cjQzU08vUzB1ZUE2OTdPZjA2QTNmdHVlMy9MWEQ1YitISzZPc0NxY2RDMUY4RWxBSE5iUWtNZzNxdjJITHl2TERXQTVUZEFtcFVTVXQvSVB2ZDBTd0JrQVBSSStCL1NUUjBVVGRSSHJ2WGhOajhYd0JSY3NIZys2empmK3VHdDVnSzRUczlvczBrYkl0WS93UE54UzFNNVU1WGxFRE8xaGJFVWJBMWdHR2pxc3kzNDRvelMra2pXYVhRbW8zMmJydzU1VDR6VlczaStCOTc0YlA4V1J2ZTIzL1NLdHQrMmVmSG1CNDYzVjl0Q3QxTC9pb2Y4R2ZwL2Q4L1dncnNROUxRaGJNMkRDSWZJRk4wOEJXQXNQRkp6TVd0MEhjYXNjWVJOWmJtODlnSkc3VVE0QUJpc1B3SFJBVXplOXZJWWxCWVRGNEo3QU1HZDY1aGZKRFBOMGJzVDR0L0tGTy9hZmpITitsNTJnSnRNbXlicU9KOFpGaDFjWkM2Q3kxYkd5K0kxZ1NVQW91WGdvSnZaWkZnWk9YdG8xdW5JY0JOVVlFSlBBdTdkNWUyY0hoaXdSVlRQVWRrR3o5dEQxd1hadTRiNXQrNURMU3hhR01TS3c1a2x1cWkzWlJjTk5MR0FtZjg5Ukwxcmo2bkQ5Ry8rdm1NcDFWKzVYVjh2NFdpMnpCcUdPTXBIOGFBUDRSYUtMWTdKclR2TEhyOTFhUGpDSjVSVHl5d3N1c2FLYVZPZUtkS0c4Ti9KWGdZd3pwRUMyTmh6dmdNVG1Va2U4NVpaWmJhbUFKaGdMK28zYlZYWlFtSW5aaHlvRTFqM2dmWUEzMzNoSy8vYnZ6c3YvL3o2RC83THYzWStuLzU5endadHRSWXJUTHZQOVhRNlBkdnZZQzlucHlld2wxbjJyT2hqMit5ZWtQZmNjOEorbXQ2U2JRaVM4K2ExSEFPOGwvc1lneVBMYWY3MkQ5di9UODd3ZlBwSC93VFpiRWQrMHF3akpRQUFBQUJKUlU1RXJrSmdnZz09Ii8+CjwvZGVmcz4KPC9zdmc+Cg==\"","depth":26,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
8934746867715147368
|
-5282605401547840447
|
visual_change
|
hybrid
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Project Phoenix – Figma
Project Phoenix – Figma
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - jiminny/app
Pipelines - jiminny/app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Search results: calendar | Jiminny Help Center
Search results: calendar | Jiminny Help Center
Jiminny
Jiminny
Jiminny
Jiminny
Close tab
Edit - Calendar - Engineering - Confluence
Edit - Calendar - Engineering - Confluence
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 874522
75
75
AI Reports
AI Reports
Ask Jiminny reports
Ask Jiminny reports
Report name
Period
Exec Summary × Loss Analysis × Product Feedback × Coaching Profiles × Report Type
Exec Summary
×
Loss Analysis
×
Product Feedback
×
Coaching Profiles
×
Report Type
Clear all
NAME
FREQUENCY
SHARED
DATE
ACTIONS
No reports have been created yet
Open Intercom Messenger
Search HTML
Create New Node
Grab a color from the page (Cmd+Shift+Y)
<!DOCTYPE html>
<
html
lang="en"
lang
="
en
"
style="--asset-image-logo-short-100: "data:image/svg+xml;base64,PHN…F3akpRQUFBQUJKUlU1RXJrSmdnZz09Ii8+CjwvZGVmcz4KPC9zdmc+Cg==";"
style
="
--asset-image-logo-short-100: "data:image/svg+xml;base64,PHN…F3akpRQUFBQUJKUlU1RXJrSmdnZz09Ii8+CjwvZGVmcz4KPC9zdmc+Cg==";
"
New attribute
>
event
<
head
New attribute
>
</
head
>
event
<
body
class="fixed-header Frontend pace-done pace-done"
class
="
fixed-header Frontend pace-done pace-done
"
New attribute
>
event
<
div
class="pace pace-inactive pace-inactive"
class
="
pace pace-inactive pace-inactive
"
New attribute
>
</
div
>
event
<
div
id="app"
id
="
app
"
data-v-app
New attribute
>
</
div
>
event
<
div
id="userpilotContent"
id
="
userpilotContent
"
key="113254367"
key
="
113254367
"
theme_id="0"
theme_id
="
0
"
New attribute
>
</
div
>
event
<
iframe
id="intercom-frame"
id
="
intercom-frame
"
style="position: absolute !important; opacity: 0 !important; width:…ck !important; z-index: -1 !important; pointer-events: none;"
style
="
position: absolute !important; opacity: 0 !important; width:…ck !important; z-index: -1 !important; pointer-events: none;
"
aria-hidden="true"
aria-hidden
="
true
"
tabindex="-1"
tabindex
="
-1
"
title="Intercom"
title
="
Intercom
"
New attribute
>
</
iframe
>
<
div
class="intercom-lightweight-app"
class
="
intercom-lightweight-app
"
New attribute
>
</
div
>
</
body
>
</
html
>
Filter Styles
:hov
.cls
Add new rule
Toggle light color scheme simulation for the page
Toggle dark color scheme simulation for the page
Toggle print media simulation for the page
element
Highlight all elements matching this selector
{
}
vue-mq-bh4L87Tr.css:2
vue-mq-bh4L87Tr.css:2
.btn, body
.btn
,
body
Highlight all elements matching this selector
{
Enable -webkit-text-size-adjust property
-webkit-text-size-adjust
:
100%
;
Enable -ms-text-size-adjust property
-ms-text-size-adjust
:
100%
;
Enable -webkit-font-feature-settings property
-webkit-font-feature-settings
:
Click to display individual properties
"kern" 1
"kern"
1
;
Filter rules containing this property
Enable -moz-font-feature-settings property
-moz-font-feature-settings
:
Click to display individual properties
"kern" 1
"kern"
1
;
}
vue-mq-bh4L87Tr.css:2
vue-mq-bh4L87Tr.css:2
.btn, body, h1, h2, h3, h4, h5, h6
.btn
,
body
,
h1
,
h2
,
h3
,
h4
,
h5
,
h6
Highlight all elements matching this selector
{
Enable -webkit-font-smoothing property
-webkit-font-smoothing
:
Click to display individual properties
antialiased
;
}
vue-mq-bh4L87Tr.css:2
vue-mq-bh4L87Tr.css:2
body, p
body
,
p
Highlight all elements matching this selector
{
Enable letter-spacing property
letter-spacing
:
.01em
;
}
vue-mq-bh4L87Tr.css:2
vue-mq-bh4L87Tr.css:2
body
body
Highlight all elements matching this selector
{
Enable color property
color
:
Click to open the color picker, Shift+click to change the color format var(--color-text-primary Jump to variable definition )
Click to open the color picker, Shift+click to change the color format
var(
--color-text-primary
Jump to variable definition
)
;
Enable background property
background
:
Click to open the color picker, Shift+click to change the color format var(--color-background Jump to variable definition )
Click to open the color picker, Shift+click to change the color format
var(
--color-background
Jump to variable definition
)
;
Enable margin property
margin
:
Click to display individual properties
0
;
Enable padding property
padding
:
Click to display individual properties
0
;
Enable font-family property
font-family
:
Lato,sans-serif
Lato
,
sans-serif
;
Enable font-size property
font-size
:
14px
;
Enable font-weight property
font-weight
:
400
;
}
vue-mq-bh4L87Tr.css:2
vue-mq-bh4L87Tr.css:2
body
body
Highlight all elements matching this selector
{
Enable margin property
margin
:
Click to display individual properties
0
;
Filter rules containing this property
}
vue-mq-bh4L87Tr.css:2
vue-mq-bh4L87Tr.css:2
*, ::after, ::before, input[type="search"]
*
,
::after
,
::before
,
input
[type="search"]
Highlight all elements matching this selector
{
Enable box-sizing property
box-sizing
:
border-box
;
}
Inherited from html
Inherited from html
element
Highlight all elements matching this selector
{
Enable --asset-image-logo-short-100 property
--asset-image-logo-short-100
:
"data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgNjQgNjQiIHdpZHRoPSI2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS02LjQgMTguNGMtMS42IDEuNi0yLjIgMy42LTEuOCA1LjcuNiAyLjYgMi43IDQuNSA1LjUgNC43IDMuMy4zIDcuOS0xLjYgMTAuMS02LjVsLTMuOC0xLjdjLTEuMyAyLjktMy45IDQuMi01LjggNC0xLjUtLjEtMS43LTEuMS0xLjgtMS41LS4xLS41LS4xLTEuMS43LTEuOSAyLTIgNy41LTMuMiAxNC41LTIuMi0xLjQ1NDU0NTUgMy4xODE4MTgyLTIuNjYxMTU3IDYuMzYzNjM2NC0zLjc3MDA5NzcgOS4zMjAwNjAxbC0uMzI5OTAyMy44Nzk5Mzk5Yy0uMS4yLS4xLjMtLjIuNS0uMDc1LjIyNS0uMTUuMzkzNzUtLjIyNS41OTA2MjVsLS4wNzUuMjA5Mzc1Yy0uNCAxLjEyLS44IDIuMjQtMS4yIDMuMzA4OGwtLjMuNzkxMmMtLjIuNi0uNSAxLjItLjcgMS43LS4wNzUuMjI1LS4xNS4zOTM3NS0uMjI1LjU5MDYyNWwtLjA3NS4yMDkzNzVjLS4zMi43Mi0uNTc2IDEuMzc2LS44NzA0IDIuMDE5MmwtLjIyOTYuNDgwOGMtMi40IDUuNi04IDguMi0xMi4xIDcuOC0xLjQtLjEtNC0uOC00LjYtMy42LS4zLTEuNSAwLTIuOSAxLjEtNC4yIDItMi4zIDYuNy00LjUgMTQuNC00LjkuNS0xLjQgMS4xLTIuOCAxLjYtNC4yLTguOC4xLTE1LjcgMi40LTE5LjIgNi40LTIgMi4zLTIuNyA1LTIuMSA3LjguOCAzLjkgMy45IDYuNSA4LjMgNi45LjQgMCAuOC4xIDEuMi4xIDUuMyAwIDExLjY1OTYzNjUtMy4xNzg5MDk1IDE0LjgyNDMwODQtOS43MjU4MjE4bC4xNzU2OTE2LS4zNzQxNzgyYzEuMi0yLjYgMi40LTUuOCAzLjctOS4zIDEuNi00LjMgMy40LTkuMiA1LjctMTMuOWwxLjItMi40LTIuNi0uNmMtOS4xLTEuOC0xNy4zLS43LTIxIDN6IiBmaWxsPSIjZmZmIi8+PC9zdmc+"
;
Enable --logo-icon-mask property
--logo-icon-mask
:
url( data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgNjQgNjQiIHdpZHRoPSI2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS02LjQgMTguNGMtMS42IDEuNi0yLjIgMy42LTEuOCA1LjcuNiAyLjYgMi43IDQuNSA1LjUgNC43IDMuMy4zIDcuOS0xLjYgMTAuMS02LjVsLTMuOC0xLjdjLTEuMyAyLjktMy45IDQuMi01LjggNC0xLjUtLjEtMS43LTEuMS0xLjgtMS41LS4xLS41LS4xLTEuMS43LTEuOSAyLTIgNy41LTMuMiAxNC41LTIuMi0xLjQ1NDU0NTUgMy4xODE4MTgyLTIuNjYxMTU3IDYuMzYzNjM2NC0zLjc3MDA5NzcgOS4zMjAwNjAxbC0uMzI5OTAyMy44Nzk5Mzk5Yy0uMS4yLS4xLjMtLjIuNS0uMDc1LjIyNS0uMTUuMzkzNzUtLjIyNS41OTA2MjVsLS4wNzUuMjA5Mzc1Yy0uNCAxLjEyLS44IDIuMjQtMS4yIDMuMzA4OGwtLjMuNzkxMmMtLjIuNi0uNSAxLjItLjcgMS43LS4wNzUuMjI1LS4xNS4zOTM3NS0uMjI1LjU5MDYyNWwtLjA3NS4yMDkzNzVjLS4zMi43Mi0uNTc2IDEuMzc2LS44NzA0IDIuMDE5MmwtLjIyOTYuNDgwOGMtMi40IDUuNi04IDguMi0xMi4xIDcuOC0xLjQtLjEtNC0uOC00LjYtMy42LS4zLTEuNSAwLTIuOSAxLjEtNC4yIDItMi4zIDYuNy00LjUgMTQuNC00LjkuNS0xLjQgMS4xLTIuOCAxLjYtNC4yLTguOC4xLTE1LjcgMi40LTE5LjIgNi40LTIgMi4zLTIuNyA1LTIuMSA3LjguOCAzLjkgMy45IDYuNSA4LjMgNi45LjQgMCAuOC4xIDEuMi4xIDUuMyAwIDExLjY1OTYzNjUtMy4xNzg5MDk1IDE0LjgyNDMwODQtOS43MjU4MjE4bC4xNzU2OTE2LS4zNzQxNzgyYzEuMi0yLjYgMi40LTUuOCAzLjctOS4zIDEuNi00LjMgMy40LTkuMiA1LjctMTMuOWwxLjItMi40LTIuNi0uNmMtOS4xLTEuOC0xNy4zLS43LTIxIDN6IiBmaWxsPSIjZmZmIi8+PC9zdmc+ )
url(
data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgNjQgNjQiIHdpZHRoPSI2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS02LjQgMTguNGMtMS42IDEuNi0yLjIgMy42LTEuOCA1LjcuNiAyLjYgMi43IDQuNSA1LjUgNC43IDMuMy4zIDcuOS0xLjYgMTAuMS02LjVsLTMuOC0xLjdjLTEuMyAyLjktMy45IDQuMi01LjggNC0xLjUtLjEtMS43LTEuMS0xLjgtMS41LS4xLS41LS4xLTEuMS43LTEuOSAyLTIgNy41LTMuMiAxNC41LTIuMi0xLjQ1NDU0NTUgMy4xODE4MTgyLTIuNjYxMTU3IDYuMzYzNjM2NC0zLjc3MDA5NzcgOS4zMjAwNjAxbC0uMzI5OTAyMy44Nzk5Mzk5Yy0uMS4yLS4xLjMtLjIuNS0uMDc1LjIyNS0uMTUuMzkzNzUtLjIyNS41OTA2MjVsLS4wNzUuMjA5Mzc1Yy0uNCAxLjEyLS44IDIuMjQtMS4yIDMuMzA4OGwtLjMuNzkxMmMtLjIuNi0uNSAxLjItLjcgMS43LS4wNzUuMjI1LS4xNS4zOTM3NS0uMjI1LjU5MDYyNWwtLjA3NS4yMDkzNzVjLS4zMi43Mi0uNTc2IDEuMzc2LS44NzA0IDIuMDE5MmwtLjIyOTYuNDgwOGMtMi40IDUuNi04IDguMi0xMi4xIDcuOC0xLjQtLjEtNC0uOC00LjYtMy42LS4zLTEuNSAwLTIuOSAxLjEtNC4yIDItMi4zIDYuNy00LjUgMTQuNC00LjkuNS0xLjQgMS4xLTIuOCAxLjYtNC4yLTguOC4xLTE1LjcgMi40LTE5LjIgNi40LTIgMi4zLTIuNyA1LTIuMSA3LjguOCAzLjkgMy45IDYuNSA4LjMgNi45LjQgMCAuOC4xIDEuMi4xIDUuMyAwIDExLjY1OTYzNjUtMy4xNzg5MDk1IDE0LjgyNDMwODQtOS43MjU4MjE4bC4xNzU2OTE2LS4zNzQxNzgyYzEuMi0yLjYgMi40LTUuOCAzLjctOS4zIDEuNi00LjMgMy40LTkuMiA1LjctMTMuOWwxLjItMi40LTIuNi0uNmMtOS4xLTEuOC0xNy4zLS43LTIxIDN6IiBmaWxsPSIjZmZmIi8+PC9zdmc+
data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjY0IiB2aWV3Qm94PSIwIDAgNjQgNjQiIHdpZHRoPSI2NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMzIgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMi0zMi0xNC4zLTMyLTMyIDE0LjMtMzIgMzItMzJ6bS02LjQgMTguNGMtMS42IDEuNi0yLjIgMy42LTEuOCA1LjcuNiAyLjYgMi43IDQuNSA1LjUgNC43IDMuMy4zIDcuOS0xLjYgMTAuMS02LjVsLTMuOC0xLjdjLTEuMyAyLjktMy45IDQuMi01LjggNC0xLjUtLjEtMS43LTEuMS0xLjgtMS41LS4xLS41LS4xLTEuMS43LTEuOSAyLTIgNy41LTMuMiAxNC41LTIuMi0xLjQ1NDU0NTUgMy4xODE4MTgyLTIuNjYxMTU3IDYuMzYzNjM2NC0zLjc3MDA5NzcgOS4zMjAwNjAxbC0uMzI5OTAyMy44Nzk5Mzk5Yy0uMS4yLS4xLjMtLjIuNS0uMDc1LjIyNS0uMTUuMzkzNzUtLjIyNS41OTA2MjVsLS4wNzUuMjA5Mzc1Yy0uNCAxLjEyLS44IDIuMjQtMS4yIDMuMzA4OGwtLjMuNzkxMmMtLjIuNi0uNSAxLjItLjcgMS43LS4wNzUuMjI1LS4xNS4zOTM3NS0uMjI1LjU5MDYyNWwtLjA3NS4yMDkzNzVjLS4zMi43Mi0uNTc2IDEuMzc2LS44NzA0IDIuMDE5MmwtLjIyOTYuNDgwOGMtMi40IDUuNi04IDguMi0xMi4xIDcuOC0xLjQtLjEtNC0uOC00LjYtMy42LS4zLTEuNSAwLTIuOSAxLjEtNC4yIDItMi4zIDYuNy00LjUgMTQuNC00LjkuNS0xLjQgMS4xLTIuOCAxLjYtNC4yLTguOC4xLTE1LjcgMi40LTE5LjIgNi40LTIgMi4zLTIuNyA1LTIuMSA3LjguOCAzLjkgMy45IDYuNSA4LjMgNi45LjQgMCAuOC4xIDEuMi4xIDUuMyAwIDExLjY1OTYzNjUtMy4xNzg5MDk1IDE0LjgyNDMwODQtOS43MjU4MjE4bC4xNzU2OTE2LS4zNzQxNzgyYzEuMi0yLjYgMi40LTUuOCAzLjctOS4zIDEuNi00LjMgMy40LTkuMiA1LjctMTMuOWwxLjItMi40LTIuNi0uNmMtOS4xLTEuOC0xNy4zLS43LTIxIDN6IiBmaWxsPSIjZmZmIi8+PC9zdmc+
)
;
Enable --asset-image-ai-icon property
--asset-image-ai-icon
:
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8zOTQwXzE0OTgxKSI+CjxjaXJjbGUgY3g9IjIwIiBjeT0iMjAiIHI9IjIwIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMzk0MF8xNDk4MSkiLz4KPG1hc2sgaWQ9Im1hc2swXzM5NDBfMTQ5ODEiIHN0eWxlPSJtYXNrLXR5cGU6bHVtaW5hbmNlIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSIwIiB5PSIwIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiPgo8Y2lyY2xlIGN4PSIyMCIgY3k9IjIwIiByPSIyMCIgZmlsbD0id2hpdGUiLz4KPC9tYXNrPgo8ZyBtYXNrPSJ1cmwoI21hc2swXzM5NDBfMTQ5ODEpIj4KPHJlY3QgeD0iLTAuMDUwNzgxMiIgeT0iLTYuMTI0MTUiIHdpZHRoPSI0MS4zNTE2IiBoZWlnaHQ9IjY1Ljk5ODIiIGZpbGw9InVybCgjcGF0dGVybjBfMzk0MF8xNDk4MSkiLz4KPC9nPgo8cGF0aCBvcGFjaXR5PSIwLjk3OTM3MiIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMC42MjggOS4xNUwyMi41MDMgMTBMMjEuNjUzIDguMTI1TDIyLjUwMyA2LjI1TDIwLjYyOCA3LjFMMTguNzUzIDYuMjVMMTkuNjAzIDguMTI1TDE4Ljc1MyAxMEwyMC42MjggOS4xNVpNMjguNjAzIDkuOTUwMDVMMzEuMjUzIDguNzUwMDVMMzAuMDUzIDExLjRMMzEuMjUzIDE0LjA1TDI4LjYwMyAxMi44NUwyNS45NTMgMTQuMDVMMjcuMTUzIDExLjRMMjUuOTUzIDguNzUwMDVMMjguNjAzIDkuOTUwMDVaTTE4Ljk2NTUgMTMuNTM3NUMyMC4zNDA1IDEyLjE1IDIyLjU3OCAxMi4xNSAyMy45NjU1IDEzLjUzNzVDMjUuMzUzIDE0LjkxMjUgMjUuMzUzIDE3LjE1IDIzLjk2NTUgMTguNTM3NUwxNC43OTA1IDI3LjcxMjVDMTMuNDE1NSAyOS4xIDExLjE3OCAyOS4xIDkuNzkwNSAyNy43MTI1QzguNDAzIDI2LjMzNzUgOC40MDMgMjQuMSA5Ljc5MDUgMjIuNzEyNUwxOC45NjU1IDEzLjUzNzVaTTEzLjQ2NTUgMjYuMzg3NUwxNi40MDMgMjMuNDVDMTcuMDUzIDIyLjggMTcuMDUzIDIxLjc1IDE2LjQwMyAyMS4xQzE1Ljc1MyAyMC40NSAxNC43MDMgMjAuNDUgMTQuMDUzIDIxLjFMMTEuMTE1NSAyNC4wMzc1QzEwLjQ2NTUgMjQuNjg3NSAxMC40NjU1IDI1LjczNzUgMTEuMTE1NSAyNi4zODc1QzExLjc2NTUgMjcuMDM3NSAxMi44MTU1IDI3LjAzNzUgMTMuNDY1NSAyNi4zODc1Wk0yMy43NTI5IDIxLjI1TDI3LjUwMjkgMjIuOTVMMzEuMjUyOSAyMS4yNUwyOS41NTI5IDI1TDMxLjI1MjkgMjguNzVMMjcuNTAyOSAyNy4wNUwyMy43NTI5IDI4Ljc1TDI1LjQ1MjkgMjVMMjMuNzUyOSAyMS4yNVoiIGZpbGw9IndoaXRlIi8+CjwvZz4KPGRlZnM+CjxwYXR0ZXJuIGlkPSJwYXR0ZXJuMF8zOTQwXzE0OTgxIiBwYXR0ZXJuQ29udGVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgd2lkdGg9IjEiIGhlaWdodD0iMSI+Cjx1c2UgeGxpbms6aHJlZj0iI2ltYWdlMF8zOTQwXzE0OTgxIiB0cmFuc2Zvcm09InNjYWxlKDAuMDA2NjIyNTIgMC4wMDQxNDkzOCkiLz4KPC9wYXR0ZXJuPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMzk0MF8xNDk4MSIgeDE9Ii0xOS4zNjU2IiB5MT0iNDYuMTA5MiIgeDI9IjU3LjYzNzkiIHkyPSI5MC45MzU4IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNGNzQzN0QiLz4KPHN0b3Agb2Zmc2V0PSIwLjE4Mjk3IiBzdG9wLWNvbG9yPSIjRjc2MzkzIi8+CjxzdG9wIG9mZnNldD0iMC41MjMzNTciIHN0b3AtY29sb3I9IndoaXRlIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFCMzg4MSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzM5NDBfMTQ5ODEiPgo8cmVjdCB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjxpbWFnZSBpZD0iaW1hZ2UwXzM5NDBfMTQ5ODEiIHdpZHRoPSIxNTEiIGhlaWdodD0iMjQxIiB4bGluazpocmVmPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpjQUFBRHhDQVlBQUFER01pVStBQUFBQVhOU1IwSUFyczRjNlFBQUlBQkpSRUZVZUY3ZHZlK3JiZHVXSGJUVzJ2dmNYL1hxbFFsYWZzMWZJWVZJa0NBaUVvS0lTQkRSZkJEeGd3UVJDU0x4blgwcENnbUZoQkJDRVVJUmdvaUlpSWdmUlB3Z0lwSi93ei9EKys0OWUrWDEzbHZydmZVK3hseHI3WDNPcmVpN3ZQUDIzbXZOTmRlY2M3VFpldXV0OXpIbStmb1AvL0ZmK09sMCtndW4zNXIvZm5yc1ROcG04c2Z5Y2J5dzIzNitkdVB2bjA3UGNWdy95VWFmZUtqek8zYkhjN0ROT041bjNiKy9kN0F2L2R6eUdYenUxamJjTjdmSm4zRlNQLzMwLy80LzV4Lys5QisvWEM3WGo0K055TSt3MWZuOFpYZDZ2ZWIrcmlmYjk5WC9KeS9pVjd6dTI4dnYrZmw2N2V5ZnQ3L2pYM3lrL3NZTDhUMnZyL2krZXYvOGVqNWQ4M3ZrYzY4NHNMa3YvRzNmNjUvVGYvTlk3VDNiajIvVGordk0xL2grYm9kejJMeHUrNHJQNFo5ODV2U0s4L3VFNzdUM1hxK25xLzM4Wkovait5ZmI5UHZ6RC8vZy8zNDVYMDRQZ0FzWDRsRXcySFoyZ0RlMnZ3bXJSNzluUW5NSExtREROMjFBd3dWVUFQS2k1aUNlNG1MemczWXhjNXNOeUhKZ0NwQm5INkM0SEFyU0JJVy9QRUVYZjl0M0wyQVdvQWVnRllBRFlCTjQrTnNCMFFBa053YStOMjhVQi9DckkrWjBmWFVnK1hjQ1ZMNHZBMldDaitENisvL1hIWERaMFFzTXRvZzR0MDNhZU85QThnamdmaTV3TllDOWw3MEdvMHh3TkthSndTZUxOR0NTNVNaN0R2WUxnQTEyTWxRNTg1RzVOa0NYN3kzd0FveXZyeDIwZzhYaWhoanM1U0F5a05uUHptSlhZNjRGWEgveWZ6N0dYQTZxSXhCdEVNZnQ4YkZFMzl4MEE2SmxiMjhCMnNKY1pJdGRhSlFCdWNOZU5vaWZIUjRaZ1pjd2lPTklvQWlRd0ZJZFlBejFHaEpIV0JSd1pIalU3elgySVNzNm1QRjVBc2paUzlpTTJ4aUFQbjBhNERKQ2V6MmRUVzdaZHZIMjkrY2YvdVQvZURtZk4yRnhFTllLRGtDQVNGZ0FvR3czNEhJRVZPempzOEJGRmtsbEJkMjFoRVJ1a1BIcWp2YVM4SWlCZUd0NGpEQVhrYVdGeDQxZWFreHpDTENkMWdKUVc2Z3M1dlQ5TXFRQmJFdUl4R2VUdlNhTGZVSm90TS9iNzRaTll5NEpsNzhoemUvUFAvN2QvLzNsZERsdk5kZFZBY1BmRzRobXVCeUFTNmJiYkpjdllmQmwvNGRhN0ZFR3U2ZTdib1ZHdmpkMUZVQjd5RjRFdGQyNVM1aDhRSC9Oc05mWVRUNXZiS09EUGZWWE1oRFpTQk1Uc2hQZVF4aHJtczUxVkgxMkFSaVpqVUM2QzY1a0xsVzdlK2JaQXM1RFgxSllYRnhscDF2dk1WbzlBcTcyUFUzWjlUOGVBWmNDVElHazJWaXlJQWNvUHZTbThOaEFFNFBtbjMrTHdDZGcrQ0VOWTZuWGhNVUdhMmttMmJTVU13L0RvNFJZWVRiZlBrTWlOUmlZeXo1TGNKbSsrNmxZMFpucmg3L3p2eUVzTW80WFVNNDU0SW1BUG9oNDN3RzNZemt5MS9raWdsL1piUjlhODN0MytIbUV2WTUwMTYzUXFFRGFzZGN1ZTd3WEhuZTJBY0JXQU1NTnZRRG1JQk8xNFhFeFBqSkVaVEJrcDR0ZFlzbTdKaEVDTHJjVUxGNHorNlJ3dDVzaHdZYjNYWE1CbUFCVTJoRjRQY0QxdC8vWGwvUFpmSzZERUNkc3NReDZFKzN4K1dRMkJWeUNpd25CK0s0UmNyOGt1TUExWlNVb09TZllSdGFvNEVyUVVYVEh6N3ZoTWRsdytGQUNnZ2F3Q1phWlFZNGs0RkRnVTFQdHdpeTFsTzVMTXo4TnVXQTBZeTFQQ0ZTbk1YUlNleGt3bmNVQXhFOVgyL3o3OHc5Ly9MKzhuRTF6N1RUVkxlYWkrSFlRWlJ4TUJtdHNSbkF0M3pGWXpQNEVLQTkxMXlPaFVaaHJBZGRrcnkyUWFHNXFOa25kUTV6ZUFwZ0FhbUd2MGs4OVJDb1RiU3dTWmJhN0dTUVlaZ0F5L0REY0hCbzZDU1FIRjlrSmxnT1p5MWlObjNHOTlYbzYvVlNlMXcxd2FiYTRDMXRIb1l5dm4wODloTmJyMTR1RlJFZE5rV1A3ZSt6N1VpRjJDN0N0YjdZeFJ5V2tobE12cUxyTFhnSWtNaGNCbXo5bjlpaG1wMzVteTBBRFlORFBhd1o1dzNKNEs4Qm05amd6UUdFbW1xTHBhV1ZvWkNJQXJVWE5CWEYvL1dsaHJ2LzU1WHlTYkRGMXVRNXRnY1hIU05scXNOWUVXWUpMUlQwWktsbEk5aS9nRWo0c3FFeHdEZHpraG05aEw0S3RBZWlJdlRROHZoVmd3NHRhOUZjSFhiTWpKZ3VKMjk5Q0pJM1ZHZm8wVE03d3FJeEU5aUxZSU9nck5OSkVOZWFpb0krUXVJTHJiLzFQQU5lUkRzSndMUm1maVBoTmFIU1E0VjhQa2NKaUxVeUMyWkxwNG5zWDl2b3NjSDBoOWpvVTkyQ3ZuWkIvUzNoVTV1UEFUemJVRERmTFJNenNCS1M3ekZIRG8rc3BBcVljK1dDdmVuM0pHazNVdTVpdnpOSEJaZnY3aVpycnYvb2ZYeTZueTBjZHhSRGxtMHl1c1pxd2pXb3pmUGJzSUFFOGZ1UFNwdEMzMXdrYjBWZ1pOcCtlSktEZEFWZXlwbVM2L1BSZ3JyamM5Z0dKaVRTS3BYU0lBaUFLZ1lPOU9NQU1zZmhjMWg0eDRCRUpOMFhwOXdEc3FFUTBtUXdXU1dnbURhZERmeDJGeHlQMmNzOHJuSGZQTkpQUkFDNFg5ZWJhdjI2WTY0LytoNWZ6NmZJeDhLR0FrY3hQZ2JZQlVvWEtZaXRqcldDdkFiQm1XNXhQcHd5RER6RFh3bG9TRTZlT2FrQUl4QzNhSzRFb21KdmFhcGFGdGdDN0krNjFXK0VCZ04xMDhEUGJYSzJLYlFicDlzS21Uc2hqWXYxUmhUeXlRd2RxdXU0R0xtV3pUL0dlaVhvdkNiMmVyajlPNXZyRC8vN2xmSG9LaHg1TXNvaHphM0NZYkxZRG1iM1d3SElQWUFDamZjYStuSjhWRUxXd3FPQlMxcEpvMTJqdkVmYlN6MjYxRjBNTTlxemhLRU1WdFplRW95dzJEeEFrNjBuQitjaWUySWJDL2gxWnpzRzJLOEJHRmpxRlBIVWZYNmZOd0ZhYUZocEZiOWwybmkwQ2dEK0J1VnBZTkhCZEllaFZBOUZxY05DUmtRNUFsZ0xkQUlKd21Ca2hBUmI3U1AwbDd6dW9ERnhQREpsaTVDcGFGTkJOalczQzRrRjQ3T3kxWWI0VXloTGFHRXBudUd2aDhZM2VsN0taaVBQRm5yZ0hzS21wR0I1NUUweUJUNFlhWm1yVFZNSldORWQ3V0FUSURGaTBJeGdXNFhlRnovWDlmd2R3SVN6TnNLVnNsaUZPUUVaZ0VTQWk1Tk96a3ZEWXM4ZkJWcW5ITnVCcVlWdENPQWY0emV4bGNMNldEa3ZXRW9iYWhVQWQ3QW5nbSticXlCUWZDSTlCYUJ2dFJrMlZJVyt5SS92QTBCb3pReU5OVWU0SE9xMDU4YlFYbHRBb3dMTDNmcVNnRjgyVmd2N2x2MzA1dnhwenFWNGFka09XY1NUTXBVZ25RQWlJQVpqenBXbXZRM0FSV01LZTI1Q29JRXRXRStIZDR1SUFpcnhuREhZVFhJdldHdC9Sd3FNV2h3WGxLZkJGWUMvNlMwSFhRMTR2RVduUldWcDBkaFlGbS8zczV0bGxpdzFjWmZoMlRVVjk5WnJ1KzhKZXlsd01pNDI1ZnZYZnZKeXZsaTFPaTJERFpHQ2wySFFUNXZ4MW1LYlVYemFJa2prMmNKSGxhRDgwYTBMTGtacTVMdVlFRVJRL2Q4SytNUkEzQzNERlI1QkZQc0plL0k0ajRYK3ZOSFJEa05meGgwNnFEdFliN05XNklucTlzZnRmM2tZcWZWdVNSVXBodW9WSFdBMVhMMDRIMk03eXUrc3Roa1dDeTdVWXJZaS9hZUJDK1VlMUUwT1o2QzFsdDhYSGNqR3U3SFVKZ1E1R1BPUDNCVndPTE5WcHNZK0VrSVJpQi9RUmVONFJIak9xcVlQL0NNQ09URmV3VXRZZEpZUkdvWm5NdEdsU1ZKUHpyUUkvdkkrMWM5VDFGN3BZMHk4YkRZWXE1QjNRSXRwUjVvblNqcjJPakJHL3U4ZjFJOTc3eVV4VXZFOXcvZmhmL0tPWHEvbGNFdnBVd0JlZ1ZOZ0hhem5BTGtPa1orYjNBTGpJV0VjaGNRS3IwTEFMZnNWZ0Q3TFhUWEFwQzk2ekp6SXIzWVJIK2V4dGdEMGFIbmZkRXRySktqNFhRT2NBYStHeHZLdW9OVXJkMEh2aHFhc0tWQVJZdldlZEVjcGMxOVAxeHdWYy8vRGxkRFVyd2tEU004TUtsV0lacUNaeXRycWNyczFLUUdnMHdFem1zbTB6WE9KOWRlUVpkam5xeXA0VFR2Y1k3QjdBbkFWcm8yYXdQc0plRTN3VGdJK0lleFgxUzdpOHBiK09BRFk4TGRXRjJwUEY3eHFzNWRmakU3b2dzdU1oR012YzkzRHNMVFRTbVJjajFabkx1bEdqTEJTZHFQKzVnWXRoY2JEUURKUHFReEVJZU8zSzBBYkF1U1Z4Q0M3b010VmFSOENhZmZzM1FhVUl2R0ZQekN4dkdxejZIYmU4cjYzKytneHhuMkYwZEdQUWk4cm94MTlrT3cxN2k4aS9FeDc5czlVTnNZVEdUNTlDMUxzSDlpbTBvSWRHZ011QWw0SmV3ZlUzL3ZUbDVPVWZ5UmFOeFJKSVIxa2dRaU5BbFA1VmdpdFlMZTJJWkRrRkZyUldDNHZVYm5hbGo4UjdnZWp1Rmhzak5UKzlNSmRvb2wwSS90endpTSsvTnp6NkZZR3VpMTFwQmpuYmRJWUdzMjJ6TkxSejdObXpGU0V4QWVZT3ZERlhXUkQrSHNIbExyMkFDd0wvTndUMy9mbUh2L0duYmtWUVB5WElORXdtMEFpTUFxSUxkWVpHZGVpVGxlSXp0WjB4R3Y0TlFNZDM2MXpIdTlCWnROZjZpWGNhckEreDF3QmpocUV1M3RmR1FqMG15ZUNhTUNjcnZTYzhpc0FYUUcyN0p6STBTanVOWm9VZUhzUExpcXlSWVJIZHFEK1J2ZUJ6TVN3NnVQNnpmNUJXUkdXQXB3QUFBWmF1dTRETFExNkV2Z1FPd2RYWWkxYUVhVE1CMWlYMFY1U2FDTmJQQTVZaWJRSFpFWU45Tm52dE1zRCsydHV5UndYVGV3RTJTajRTSmtQY3ErZ1hVTG4vRlVBcTVpS0lYdU56cHNreUxOcmZuekpqOU5waUE5ZC8rdmVqdHBnZVZoZnZQZHhKNkJTOTVENldaNDMyRThEMDM0UFZ3dWM2bjY3VzhXQ2dBc2dXWU8xbUM5M0lDKys5dGVXOUNiSXR1RzZFUi8zODd2ZEgyQXZhNnFIdzJFUi9hYXlsUmJxRnlGc202MUY0MUU1VGRFQzBqbE16VTZlZ04zMVZvdDdBNWNEODZkVXcrdjM1aC8vRXdJV1dHNEJnaHNqTThCeUFnNzBjUERCVUNUaXJFUTV3WGUwMUI5WnpGcWc3dUdBRGJSMzRnTkhiZytUbU16ZkFGWkRhMUJzMU02VG8xcDkrZEtwNWRIRHJ2V2pOS1lDMDBzNFU4NGZaNDJUSzdwbDF5NkZZTUpyOU9QdUkzaGVOVkxJWE9od3lLMlJJakovVVhXR2s4cjNPWEFOY2YvSnlmcjE4ZEpaUk5sTDl4RklQTTBDQ2pGcnNRb0RCbGxCd1haNmN1Wnl0bnA2Q3ZTUWNCak1LQjlIcXVFTkxqd010QmxSczJXWkI1R0RqK3dwYzcyQ3ZXUzhjb0hzNFBDWndoeDVqNldnSFpDOVFieFl1eVV5emg4b2VIc2Ywc1dRb2dBZ2kzWmxMMy9PL0syTjA4Qmx6L1VqbSt1dC9VZzU5QXcrMUZHcUZKd0NIZWlyMUZRVTdtT21KSURVd2djRVlEdkd6c2tqdzBUdkFaZGYzUVJ3bXF4aFRScExWSWFSKzEzdllpOXJmOTY3V1JRcjBBL1k2Q0k5THNScjdyZFZuN3JCWGFxenVoK1huTWFQSHYyZG1rSmtKUXJpbm9BL0R0SFFYZ0dhQThuODlZNHl3K0IvL3ZSRDB5VnpRVFBDb0dQSThwRG1ncUtYNGU0RXJRcCs5YnRxSzd6ODVZemxyOGZWWkpDZExQWTZXcFF4MCs2TXk2Tnh3Q1k5Q2xjMUw2OFphZm15cnZSajJwTDlMalV6L1hSbFIySVJBbStHeHZsQW0xQjZVa29UWkFqaEQyS01jbE4yazF1WEh6dEtyeklVMDBlN0NYUUFFa0xIT2VEYkc4cktRTVJmQTlTTXl4dFJjLzlIZmU3bGNMaC9kblhkQVFGY1pBM240S28yVmRVSE5Cc0ZPSWVvdnA2c3pWd2gzWnk3N25lRXc2NGphb2ZyMmtNaG9NeVBuTWNDR0hUSGMrZTMrRWxNSDRNclF4WGdxdGo1K1RhYlFiUW13QVJwdFRTYTdSbWtHQUVsVzVJenRJNEJ4ZTRUSUhjQmt1bjQwRzRibThrbXh5QVFOV0s2dHFLL0lUTXdZazlFR3VGcFkvQS8vcm9NcnhEWUduUXdFWUtYQW4rd2xmdFhaQVVTQXhVOTdiUUhYbDJBdG91ckFyVjlCOW9CYkQwSkp3RDdDWGhNMHFySGM4T3dDUHZhOXFTRW1XOFY3MW1WMnE4aWQrNFhPNnZzRVk5bGV4SUxRVnVkYS93R2RFbXhmWnBIYlhIaDBQd1JEMVV3ZjZxNENIalNYOVhYUnBVL05aZUE2Vy9rSGRnTFphOUZmd1VScFRhU2VBcENjdFFpdVlDNEhGME1paFB6U044WU1iYVBRNzRyMkc2V2dMd3V3QjloTG1RZ1lhdURhQWJHRnlaRkp6dkNZbnc5bW9sT2ZJT1ROb1JwS0JiNHdtR2FPVWZZcGQ5NEJLU0V4UUZUOThnMWN6bUszd1BVZi9KMlh5em1ZeTcwcUJaZVlvZ3g3N2xjeDVCa2dFUVk5SXpUd09aZ3NleHpBMHBEb09oNkY4am5MYU1ZNi9IMEl0QnNBdzljd2J0MXAxNm5OMmlHOEpUeFN3Q2NMQ2doYUdDVjdDWk8xdnF4NC9UQThZbDhMd0RTTWl0WXIwN1EwV0xDWGVGdjQzVU1qTkJmN3RjNzJHdnZsSWVxVHVRZzhZeTVxcm1TdXYvYTNYeTZYcDQrbjV4THFLY3dsSTNSaFQxMlZUanY2M3MxdU1HQmRuazVYMjgrVDJRK2l0WmdsSWlTNnZwdUc2VjJhaWlGZm5mY0ROTXJMd1dJUGhzYkQ4UGlGMmV2UjhEZ1piR1NnTndGbXpMS3pKM1Q5aDJTdUFGcm9MZ0dZOTJnSnVNenZVdkRkQlplWnFCYlNuSVVDUkkzQlhOeGJtS01SS3BraVJIc3cxOVBwK2lGMFZtZ3dzQmZCNk9Xa211eXh6STI4ajVOM0F5eFk3RUdBVFRhOHgxNnFyV0k0NDB5UUdTWUFkdXlsNENGNzVXdkNYdHpmRVBoYlhXZmZleGdlZGUwdE1VODFORnEzQXdFRXhpcW1VbkJaT1AwcGJJZ3RjLzE3Ly9YTDVmd1VZZkc1cklZQUZ3RkhYV1ZNWlphQ2drc3l3NmZuMC9VWllkRitWM0NoaHZnbHdMVXcySjNRV0pnZC90WXRNTDhKWU1PZGIrQzZJK3dWY0dsVHZFTi9UU2FjWXQ1N0FyV095TlZyR0JvTGFFMVhXWG1IbVNPQWxzekZHcU50NCtCQ04ycUd4WC9Yd0FXZnkxaUk0VEZ0aFFKWTJnMXBNMFFJVE52aE9jQVZyR1ZsSHI0ZnJueGZYa2tnOG1CSTNHRWhQL29HZ0czRDYyN251cytEN0hIeHZUYkNQaGVNMnpGY2VsUEZkSWhsYmViMG9yOFNsRlBnQzJzU1lMdndhQm1odms5THd0cHJHQmE5YmtoN3dqSklHS1hUampnRTE3L3p4eStYeTNPWXFBNHVNcGFFUm9SREI1ZHJLM3BZRVFyamRRdUp6NWtkTWt2MG43QTBxdFFqUHRmREkzMU1NNVJVajBYVmpzS2J1SDZBdmQ0RUxnbDNHVGZUSHR1MDRjendlS1MvOEhycEwwZHNMZVFtTE9aZmg5cGhUQUlab2RFYUF4TThBQmQ2NkJrYUZ6dkNPeVBBWE5icW5NeGw0UEt3Q0hDWnZuTDlKWFhDQTNDeFh1amdNdFpLY05ubkFUVEpFbjh1Y0NVK0gyS3ZkYU9IQVhhVHZVYnBwMmt2VHBobFFWc0syNkxOd2pSVnpWYUdxSnVjTFlScUtLNHcyaDVRWUpuVENJL3BmUmtnZEwxNWdzeFhEUlJkWmF5RTdnanJkdkFDTmd6VTFHRmtPQXVMRFZ4LzFaZ0xWZ1NCaGREb1dTUC9lZDlXNkNreVY0TExHZTlEaUhreFR2TjNpUGlmRTF3T3NJZkFKWU0zcUc3Zm9qTTIyb2o3WUs5YjRJcjM4L2kwSkxUN1hOS2gxZ1pqSHkwOHRnSzJBS3kxUEdNZjRuTmxUWkZabzN0YkFUWnZYYzZNVU1NaUhIdXpJaWE0bExrc3UvenhlbnI5ZFAzKy9NTmYvZU9YOC9ueTBhMEdPdk1mTk93Vmt5M2dndDQ2bTRnM2NFSE1GMnNGR0dtY0hvR3JMZUliTFlxUFJiak5WbzhCN1BiK0c4aDJteXE3SkJtOUVWeXFtZTZ4MXhJZU56NVpXaFRqOFNwa3cxenZWR3FJYk1ISk1GbHROQ0hhTzdnOGd6d0VWMlNNUHIyc2dldDAvaGk2U1VLakE4VWEvQXBvYmtWNHRnaEx3cll4Sjk3Q0ljUTh5ejNGWUkrQWF5KzgzZ1V5NjVaNENKcWZBYkFCcm9wV3QwTmpzdXVSc0o5aGorZWhvUzBqcDJhVUVtNk5JUjAwbzZkczFCaGRWMjNCTlppckxUZ1M3TFVQaTlmVDZkY0RYRC8rMjMvOGNyWHl6eFBha1RVMHV1TmVvVEY5THJqdzZjWjdTS1NZaDk1Q0NJMGVzVmhncERFWEx4enFOR0dzNW9zTkhtOEcyVU1BZTR3ZHQ4bkN1OEMxQ1kzdlpLOE1rS3JSR3BoMjdBWDlCcEJsa2RwREl4akxmeEpjVlYrczFXeXFtTDBZcWRhRmFzemxtZ3RoMGNEMW0zSC9hTjBNekFhZHdkd01QU1BVbFJNZkdnemF5ekpGaGtTWXB5ZG5zekJRdzdvSUd5TEJsU1FsYU5xME02U0xENWk5Q1dEQXpXMEdld3hjZWJqYnpMRmVUTjJWSWE2elNWeUEyUDdRVk9WbkYyYlQ3b2o0UGZZMGkrRGNEaDZXYXJ1RnVXUWVJbDE1MWdxZG5XUUtHV1lBR2NnMFkyd2xvQzI0L3EyLzlmSWI2L3FqTVZRd0U0QUUzZFZFUGNKZ0I5Zno2ZlNCNW1rSitqMjRKUHpseUFNMktBbE5RQ2pJL21rQ3pNWngxV0lkY2ZlRnZZQnJDWUVNY3dvYVFhb0NEcjlYOXdSQnBhRVE3QVdQcTdYdmNCMTd0ak16UkxKSURhK3Jzc0hxU04yREM2dmRMTXhsNEhMbWl2Q1gyc3NaNllKYUljMVZDSFIyT2p4ZlR1ZG4wMXNVODlJVXlIMFpjekVrU3RSclh2bUd1WFF0K25jQlRNYjltTUVlWjYrWlk3U1daWnpYbDJPdm5YYTd4MTRBb3F6SDFXd0plMXVta2JXTU1jR0Y5aHEzSWpiTUJVRmYyYVQwMkdmNTUvVjAvalhENHI5cHpIVnl6ZVZzd3hxai9YVDJzaEIzUG5tNFF6ak1OaHB6NHcxY3lsd1dFcUczR0JaekNCa2VId3lOdmxuVFpBR1RoeGhzNE9hekFYWVFGaGVtVFlacGlKTjY0NWRtcitHZFVYc2hlMHlUbENRSUlOMEdsODJ3bGlsa0RJdHZCOWNmdlp4UVc4elFTQkZ2NERMMmNoK3JneXRzaHdEWDljTUh2TTlzc3RwdTJuS1h2TVJrS25aSGtOSDBwN0JaWjdFdkRiQWRlOWwzak5mdmFDNFBtN244aElhNHZmWnFucGVHeU5rbzJONmJRQnJHcXJLVFdCUEwwcFlzOFdoWXpCblUwMFNGZzgvT1UraXVlRW9aRWdEYkQ1bkxCSDB5MTc4QmNDVnpzUXhrekFYaGJxWnFlbGdJZlI0Mm4xM1FPN2hTNUZkTjBTZEVtS2puVGF5cXBRR3NwblIxSnVnemc0ckZmazZBOFFqZURxNjZOKzZESzRYOVlxTHV0SmNjeTVGVG44WHkwVGVmTmthRlZYOTJFRU9oTDR2RWNBaGZ5L3JwMlJYQjRuVDJ5NXZWRVd0SFZDUGhFYmoreWgvRkkvRXMvTGt6YnpvSzlvTXpGOXFYQVRRTmlRRXVsSDBrUzh5Q2RiYlgyRE9laFpZMm9TN2VMV2gxR1JZZ0M2THJtZWZkRUxraHBqVkVjcU1EWUltdWJpVGJuSFI5WjREckFFQTMyWXVNeFYyMWNKc3Y5aVhKOHpNQ01QdHUxMXFpMlpnVm9saWQ0R0pMc3dyNkJCY1gxZzJMd3VaSDltd1J6WUtOdWY3eUg3NmNucC9RenhVaDBPMEZhcTRkdVB3MUUvSlBycmY4SDhvK25GV2RjeUN0dXlLdk80QWhJTW1seEpmUUNIYVNyRklCOWlhUmZ4ZGd0b0ZDN2tEb0w2RlJHV1dld0FGN0hYUk41RVhTOTMwWHM1OWVrRDR0aTFGSFhOYkMxM1VoakswNHU4ZGJhdnJmb2JsMC9kTmF2ZG0yTGViaWxQNGpjRmx0RVlBcWNFSEVmNFhXWldVdWdvdkFndjRLSVk4V0hKbGdxK1Vkdng0N3pYVkRmN1dubUhIVlFXbVRmZzk3ZFo0OEFNYTlseHNkVDVsMkZCcDNHbXhvS2Y5ZVlTZitlY1JleWxoc09IUldJamk3Z1JxZ3Nsb2kxMzZ3c01qSDNHRlZHMzJvQWR0dXNuRndBeTU3endyWHZ6Yk45UnExeFIvLzlUOThPVDJkbzgwWjNhTXRMSDZ3Y0duNktxd0pCNCtCeXkwSVk2MFM4d2t1bWNvZkM4UEZmMXY3QWFEeVM1a1NhNWZiMlRRMzdLZ0I3RUg5ZGNSZWg1Rnc4NEZiekxXRXpzbHE5MnVQOTlsTC9DeE5PRnA1YUlSQWZZOTk4N3JzNUt1Rk9iQ1dNSm1IdldRdVBrZ3EycDFaQW1waE1jSDFTUVQ5dndadzBYWnc3d3BoMGNEMEZjQ0Y5eHU0dktZbzRHSm85Q1dUc1BnSU95SkdhR3dLNVNCN2pKY1ZhQU5nYjlGZk8zRGRqSVFQaE1aSG1FdEIxelFhOTYvNlNhNEtzejJ5MGkzMjJtbXRDVGlaL0Jvc3hWNTVkSnFxa2VxYWl3L3hyS1hBYzhMR3JvL2V3ZlY2dXY3NktzejFyMzcvY25xK2ZQVE1rT3hsQUhQTlpab0tmZkdaTVVhVzZPMDFNRkJwVTdobDRXdDF5UUp2b0tOZ3BnMGphWmpjbUsyK3lrUDdIQUVHa1M4QWUzTjRITXRVZFBmaEFYRHB3Tjlpcm56dm5leVY0RkVObGhWc2hJVWg0ajBzc2g5TUYzWmpIYkVNMDFvQ3ZDYkIzZ0pYck5jbGsyYXo1UWFQYU1tdytLOTgvM0w2Y1BsNCtrcHFobTZPM2dNWHdxS0hSdFFUZFhhUWdZcXIzK3hBcFRmcHhxTElhT1hNaDRWRUtpNENwd1V3Q3Z5YkFHc1pheDFBUXI3aDZSM2dhZ0Fibjg4LzczZE85UEM0MFY1SFBXQlpTOXpZRVp6NG1yYURnb3doRUd3RzV2Sm1RcTZOS2o1WEE1ZlBESUtGWVYwUnBybXljUDJYQkZ6aWEwVkIyc0tpc1JSOExuaGJwYm1NMlJBVzNabm5Lb1BGWExOWHE0VkQvakdZU2JkUmJ5c1hwL01Od0dCdjFWOHpNYVNNdThjOFBLaUhkZGVSWnZ0TTlqb0tqNHZ1R2dERGVxWmR6R1B1SWtzOTBvYmozYWpVWFh5dW9zKzgxdVdUMkVBbzRMSUY0Sks1REZ6UDUyQXVCNUVWb2FHNzdvSUxOZ1E5TGdVWG1DdG4rd3g5c2x4NnJrQWpKWjhZVDFvU01jRkRBVllQd0tyUVNUQWZNdGdCdVB5YkhtR3VDY0pEM1hVRFhGc2R0bU9va1ZuT2JERmxtLzF5Wko0U1FOVmxHbjFjc2c0RTE1ZHY0SW9WQ0dQT29naDZYZlVtUXlONjZJMjVGRncvL0tYdlh5NldMWDVOY0tGZGhock1CTDFyTDNoWnlCd3JXNFRmNWV0SURNYmkyaEtxT1ViR25rT2c3TVU2U3E3alJhYTZEN0NId3FOUzQ0WktOYi9kYm5xTHZXNEI5R1pvRk1RNUN3bFYrdTgzd3VNczlYQjcxMTNWQTU4aS9rM2c0bVB2MWhWdlNuY3B1S1Q4ODhPLy9QSnlvZVl5OW5JUDYrbDBCcmdDV0U4ZUhwa3BybFlFT2xOZEg4bFNTMHVteUNlcFFvUE9rWnZhREg4WFExMmN4eXo4NXVvN3lYUVZKdSt5MXgxd0ZWLytHZWd1eDgwbWMzeUkzY1lralcyR0tBd0ZSejVBQmtHZkxuMzFkN0VXR2N5RjEyVTZQeldYTC9UbXJyN00vbEdmYXdHWGw0SFlCSGdKMXZwcWdxdG5pMjY4NWdvNFhCc1ZOVVVKZDJ4eGE5ZHpETFJxTkMzMzFNTkJiWTNBcUZreVJLWmw0VXdYMEhnWHdBYVdIazRPNWdrcDYwd2dOeGFTTjk4RE1ETGN3bHdJazdxOFpIdEtobVNLQ1Rqci81SkhzMkJoM255Z0FSZDVhN3JyRVhDWkZXRmhFUmxqZ3VzRHdEV1l5ME5pV2hFeHM5b21lTmlBaGcyQjhDaldnbzZiZ213bGtXNVh1TTV5dkhDOU1QekVXdmxrTUxJYkFmZnU4TGdocXkzSUhncU5EK3F1NVc2N2t5RTJmZFViQkhNcUdkbkpYSHFHd2N3WUt5dk05Ym44aWJFRFhHeTdjZDNWMTR2Zzh1SDNtWXVheXhqSzNYZFlFZDd4c0RKWGdDdTBsdGNZM1R6bG9yc1NHdFY5QjRyaXNvSE9kN2JYMVF4WWhWd1ZxaHVBakxrV0JyTnRQek04SGtSQzhHRy9GOW9kTXo2b0RMWG9PdG0yaVhMUldWczIzRXljVmZiSzV5cXlGVWI4TFJhd0NUcjdIQmVCZ3hQZndPVlBpdVd6ZktRcEVObGlkK2sxTElwRDcyRnhnc3MxRi9UWERseVk3VlBncW1YQitlU05MUFcwc0xnTEE1RVFYdVBCUTdHQnBHM3h0TE5TUVkzQkZHQ3V3N0FQU1FUZUhCNXZnSXRIbjB4Mmw3MXVhVGF5MDhFMW1RSStwVmtBckQyMFhicFBVMC9wRWtsOFg3TkJoc3lqc0loV2FLNHJuenByWjBVMHphWGcrb3N2THhleklqd3NzcldaZ3Y3cGRIVzlKZG1pMXhxUkliYkZSdW9KWm13UTlNc0hFelRBczk2eEtUVm1xYWQxUTF6eGpDc0JvR291aG1LK1JwSC9sdUwySUkwMVhHOWV3Y0dYQ2ZzTzlqcGt2d0pmeWdpWFV1SzZwNENQMTRONU9HVk0xdDZhNEdMTjBNTWxoVHcrTDJ6MnNNOTFLT2didU1CV0ZoWmRVd0ZjMUZ4WnNNWjczaUJZWVpHZWxzOGlUeFlLRjcwZW1DbUp2Zy9PMEZoRkQ3VzhONEIzdm1CN3h4aVdkZUpQckx4VFdlUTd3K01Eek5WZ0pqNlhIMmFySDBJQzdKQzZiRWZkSUpsajRrczBHQUcyOGJXaTBBd1B5NEVtWUd5Wll0ZFdBVWh4NlIyMDdOblNCNlZMZUd3bG9LT3crQmRmWHM1UDU0OW5ZeTc3bDVvTGRjWEJYRDQva1MwMi90UEF4Wm9pbEltQlNVbzFiSGZRSktwZlc3NnpFV0VFRnBuTmkrSmNKeHppM3RmQjU0TVZzQ1krYTVKdnFUMStCbnNsZmdab2pzM2NqZTVhd0ZuYnhFd2ZyUit1d0lsK2VRRE1OWlp1UTBzQ3BxcXNnNXFQdWh1dmJabExRRlZ6RjQrc0NBZlg2ZVBaUU9SR2Fsa1JLZWFWdWJ6bGhtSytWZzhNS3lJWWFyZHlZSUhOaEdLTjRvNG80alU2ODBWbElha0lLQmJDQjhBK1h6ZG5BQUFnQUVsRVFWUlEzNlQrcXV3Uis1dTk4VnRXZVNnbzFrYUxTOStCYzV4dDdnQ21vajNBVWNBNnlBenBWZWtxZ1JOYzB0YXNvVENjK2dCY2V3U3hyT3k4YytoRDBJc1ZZUzQrYTRzcy8vendMNzI4bko5UEg4OWZBMXpJRUtNM25wa2lOQmZESWlac2NIRzNlQ29HVzJ4RTlpYmJWSmdNU3lZdXFzOUFHVkpNbzJTRlZoYXVBM1RwYi9sS0FmVThJZ080cjJlUlRQYk83UEd0b2ZFRzQvZ1JUL0RsdmZVWWV4MnlsZ09vRm05ckMra3F1S1lWSVRxcmZWNlp5MEROYmxTV2YyaEpaQWxvQnk0VjlBa3VDNHRzQ3BSV0d4ZnpNRkhoM2tmaklLZVExU05YOUZFclpDcFhTWjR4b28rZXdKb0Rva2xUMDExZ01iQmlBQXRUenZ5NVE4cG1JenhpRVpRM2UxK2ZDNjZOOW5wYmVGVG5IV3ZiVFBmZGpqSDFGWHF2R0RvcDFIa2pKMnN4Sk1wcWdnS29oYm55d1ZKSHRjV0htUXZaSW9ROHc2TUR6a28vN0VoRkoybyt1TURYazNndTBRN1o1SVpxZ2lRWUpIREZFcERldFdBeUNZY3RNR1hMelF5RllDWThrQ0dlNndpQVlTa0IxMkl0ZTN3d1BINHV3QVpiUGNSZXFmOExYTWxhQkt5NjhRa2lBVmNDRHNuNUxkWWFwdW5kc05pWUMwdUtzL3lUWVZHWjYxLzgxY3Y1dytYajJkeDV0eU5NVDVuMndoUjkxMklEWERJNTFoZlo1WnIwN3NpTHFCZHc4Vm9IdmlUN0dZWHNVbVB4Mjlvb2lBNi9kT3p4ZUJpYjJJMzJhc3NZZlEzOC9ObTdLUjd5dnQ0RHJpOFZIaE5BZzdVVVlHbVlobEhxTmtTeUcxZTVFWGFEcmxyMDFpRno4ZG1MNklvd1lMSDB3eDR2VHV6Z1kvRVd6WFVFTG5hYkFseTVzRnViSUJ2QTh0NTUrbG1jRDQyTTBjVTcyV3hxalZ4UVE0cis3aENPckpFbG9FRGJlQUJvUFV6MHpFZktVTlNUdmY0L0VoNFAyV3ZlY0dJM0xEY2piSUxvTXBXVm1Ra3NBd0VySUV0RzZMRzBQZThubnYyRFIrVU56Y1VIZS9yUFZyZ3U0TVVhWG1aWGZOb0krZ2t1YytiSld0UmFiTHNSQzhLRU05ZVhpSWQ0b2hzQ09Fa0dTNm9QWktraHFCZnVLR3ZzZllTYk9pUDZ4dHpmTXBlZXk1b3pQS0t2MzhNbGR5YUwvNzZwT04xaTlZMC9ibVNQZDhPakdxTjV0WFRTUmEyclJhWnlDNElBM1lKckF5Z0ZxWUtyRmJobGF0a1J1SHhaUysxRWxXYkJILzdnVnkrWEQrZVBwMjlvUlR3QUxsMHpJcDhaRk9EaU9sdCs3QzBWUkkwUUYwRlZGclZZVHgzRmJHVlZxS1lIU1VjRUhvVEY1Mmo3WTJFQU5JWkZySXV2blJWK0dHenBPYkluM2hzYVozZ2NmeThBR3pJaFFLTzNJdjRXQWU5c2ducGhYd2ZWYWE4VzIyMmFTOWl1bFlkcUNmR3NMektqSEUrTHJkV2QwVWRQY0hFNnYwN1FjSEI5Wloyb0FKZjNkS0dsWmpLWHJHN0QrWW5XQmNIMjVucmtTdFFLWi9jRC9Tc1ZxWTMyTjJUZ2JzVnNKRXhqRlpsanpwRU1BNVdMMVBudk9aY1NpNnlJbGZGUTU4VFBCRENQOER0UTdUU3BocnltcmNKVTNZS0xCdXBPMEJNNC9yTS9jekduazZsZDBiUldudzEwYnVBYTh4YVR1ZHlodDh4UW1NdkNJT3FLWG1QTWliT1llb1lud0U1d3hUVUxBMHZIQnZkVVV2Z1dXS3JERW14OXBrOU9jSFF0UmhNVkRPYUFxcWQ5WlBiNDlJeW5xTDB4UEg0T3VIWU1KcSsxUitaQk5QZ0Yyd242b2JIVXJUOEVWMmFUbzl4RFVHVzJXSXgyRjF3TWo3bkM4MndXMUd5UllkRkFaYUdSek9WVDlTZTQrT0FvenFxTy9xMVlJelc4ck9wd2tNQkhsbmV2aXE3enJNTnBvTHloWnl6VWlWTlBvSG1HeU1jaTQ2SHRQc25FbWF6V3lqKzdiZkxHN1BGekFYYVFSWFp3VlNnc2dNbGpoVk5MZ1dteUhBUUdCTHVaTWUwNmNzdGNCNEplbUN6QlpmdGdTRlRtd3FPRzgvbEFTMWpVTm1lQ1M1bUxpK2R5M2lMcmkraFNiUStZc3RWeCtEZzlQeTFxcGNGYWZ1MEdnTVNmYUZzYmUyMm1vMmw0eklrYTZ0QVROS2d6T212NUV6MjRxQjJXZlRLd1NYdE83MzQ5UU5LWEJCaERXWUpPckJsK2o1WjkydnhENkNPQTZ6eW03RGR3TGN6MUNMZ0V2RzQvd0VCTnh0TFhzRzRxdXlKOGdzYnI2ZndEbjNHOVpTN09zc2Ewc2cvUEo2czlXaE1objZuSVp3QTVjeG1nYUdUQ1ltR1NXQkhTNEZPMW5rcW8rTkRKU25nVzNtck5nNkxCbElHa1U5VXpSd01Vc3RnTEp2UlNmL0Vob3dXd24xbmM4NFNvbmFpMzhpSU0xb0lnOXh1dXJXVXFYbGFDUzRFWjEvSk56RFYwVno0cWo2L1ArWW9OWkp3WUd6WkV6TGpHV2hIK2pPc3RjNkZueTEzNWNPN1BObi9SU3o3MTBFNCszU3pDSVFER3dqMHVLTGxxM3ZnaExhS0lIWk45UnNGMkZ4bVZ6Y3c3ZFdrbklTNkwyZ0VzUHNhUHl4TllTT1FEUmpOVTh0ai9yTExIUTliQzdjZ3NNUzJKZ3lsajd3RlhzeDlHNWppOUxnK0xSMVpFdGQ1RU0rR2MvZk1JYzNtaE9sejdZaTZzOGl5enErdEpaQ1hpVTVjMmtJR2RVQUxLUjRYa25YMURhK2xiNGxjeHVqV1F3ZU15WnVMU21iRzR5dFBwZ296WHRSZDYvMUdzckc2T0tGYXRCL1BlMERpeXdrVnJ0UXh4ZGtMVVk0Vjd5dzB5Ulc4RXJOYWFRK2E2SWVLM1JpckJKWThnenFmQ3lzU1BCVncrNC9vV3VLaXRoTGxpSFM0ODRNQ21qOEZMNHJvUUtlYVJLQVlSeVdnSU1ZWFc1RVVoK3ZZak4xL05tVDVNU0pGRTFFd2dzQ2l6Um5sT3BDMVU1L3JMV29hdzVLYUh5dFJmMm9mMkJRRW00RnJzQjE0anZSNnR6ZVkydUx5Z2tkbGxBTTd0bXhidStxUHdBa3lidmk0K2FFclg4VXB3OFZuWG9ybXMvT05oVXBqckVGeG9kYzRsa3dndVRvcTE5VkgxaVdWMDVYM1dUNW1relhLUSs5ODdrN1RnUDMwZUNqV0Y1VWJZNTlvUkNJdlo5SXBzMFJrTE01R0N2U0piTlBaeXhzSmorM3hsUkF1VnNwYVlINEo4NStjeldPOXcrUG5CRlRmdWZYRDFaMXMzdDM4QjE1aWcwWjVpQm5mZVRGUUsraTF6ZWZHYTYzSFYxUDd3dXRCbUE3SHNxeitmd2tEMXdkaUJDL3JCelZVQXlWbUxWSjV6TWJod2JJVk5qVW5KWGxwajFLSTJNMFpxTUs5bGgrYXlZN3RJcDRSbmo4OGZrRVhHTTR0QzRFZUh4ZkxzN2M4TmtidVEyS3dKQ1dzYTN2aTdab3FxdzZZVklYOXZ3VVd6bEVsQzlzOGZtYWhzQmh4VHl2TDVpeUxtVTNQTnA1WnB0bWpna2pwaU1GaE44MmRZcEsvRmVtTHZuWTk0bFdFdk5WY0FpTXpGZGR6ajJ1ODlydGpIdnZVNVh4M3pHbjF6Z08zQ0dVSFVZQ3hvWTRueldFUGYxblVGd0tTVitxR0hYZDNWWUtJRkFMSkQ1aEpnNVJNeUNDYWQzWk1aWnpGaWhVWG90UjF6elNKMjdsc25jcUFiRmNJLzJwaEhEejJ6UlY4VGxhR1MyZUlkY0YyellkQWVjQUFuWHVZenVsbUtRZks3bkpOaHMxZTlPS2ZMcW11VXcxSXJBVkJBWEJ1bkE1ZmV6WXdXc21xQnJYRHFlMmVxMTdRZFdKak1BUjBXZWl1V09UOS9NQmFMUmV3eVBOSU0zbmx0VStqZkJOZ2o0S3FicXdUN3BrR1FOK0ZrTDIrM2dSREJlMXZObFIycjByM3FMSFlIWExrSVNYK3daejZhbU5taVdSSCtZS25yUnRCYk44VFhsOU1WNjBWa3R5bXNpRmlQUHB4NVB1TTY1eWhLbDBGMW9NYUZUZU4wK0Y4NnpVekYvYzZ5Mk9XUU9lNnpIU2QxV0xVL080T2hpaEM5WHBFNUJyaWVUeGRmQmlvWVRNUGoxRjg4amtXSEhRTHNCcmlPUWlPb2ZXbHQzb0VMWUZKd3VlUklRYzhKR3lMZVhlaVBUbFMrNW9KZXR0MnN5WldtYXJaQWl4WGhqMmZaZ2N0RDRnRzRLT3pkNTZvYVhtTXRkcDZHYVJVaFVGRHhLanFyWGg4TGs1RHEyb1dYblRCc0tkclkyVURXU2kwR1VZL1hML200bUZqRXBBSHNLd1BZVndCWWxJZW92NDRBdGdPODQxclBnZDBKY2o3dC9XWGJNZ2s3dU1iRURDMEZlUWdjVmdTMVJ4YXRoWjFtUFZFeXgwd0NkSExHcmRJUCs3elF5eFhQVzN5WXVSQWEvUmxBbURCN0JDNkdFbmVJdW9aeXMxVFpYeTQyZ2RZMG1tNDhTcERKSHJLUWI2ME9YV3VtTm1zQzYwb29nMTM0eUQ3TEZqODhPWHVkdnpLQVVYK3h6d2RaOEM1cjNTRHNIcmdhQUNlNDdFMEkrSlc1aHBtYUFwNWRFVU52MFlySWliTDR2QXI1QWJUSHdBVXJJcnRRMFNqSVoxejd3enluejdVTGk5Wmw2Z1hzZXNDVU8vVE1EcW01NkhKNzk2azhWTjR6d3k3WUUwejVzckpYZTllSHJxYWhiWU9qckN0Um1xdWNlNW04Z2REdERFWnoxWi9VRnZYR3kxY2ZRbjk5OVZWb01IbVVIOEY3YTVWRVVacXlHb0Y2ZVJVaTc3S1hyZE1nNEdubXFRcjZlM29Md256cUtpNlJGSE1jTjUyb08zZCtsSDE4K1NSYmhva3R6dmZBZFpVRjREeExoRU9mV1NNZXFxNWFLekxHVk9tWXV4Z2hNVzlNRWVnelhIYkdrb0FwWVpRRFYrOWlrb1Vra3JGNENjTVo4b2FzTjdKTVZOMnFGOVFkMlRWaGszc3ZYMzg0WFl5OUhHQWZhdG9hZGR6d3dPNkdSbGZXMUFlOXZMWE5Ha1dzQjNtUFJYUHpmZFlZdTRHYWVrdnRoaWJhUjBjcTk1K2xuNkhGV3FhSVJlUmtaY0Y4UEF1V0NmZDE2SStZYXdWWGlIZ3ZBYms3ai9VZ3VEeWxEMTRzeGtZL3UzZWlGc0lvQXlRNkJqTlJtYWttR3dMNTFwSkxtU1g2L0l3ZXlyd2t0SFB3TCtjVEdZd2RIdEU5OFhRNmYvMzE2ZkwxVnhFaXpYQ2wvL1VHZ0JWd1lPU2xHSy9icEQrYWhReFhvYThYclhIVkdOSjJIcGV4SFM1eUZLN0pTRHQzdnE4UndVa2JUY3pidmhKYzRzN2JmdWRVL3B2Z3dwcW9uaWxtdGhpZEJiUWpiTkZkRi9ESXV1Z2xzYlU1czBRM1RPTWlCclZMeHJqVXB0V093R2RFaDB5dnJBSHp3RkJOYWNUZUxqRmJhekt0ZXhTbjBtQjQ1aEZLUXc2d2I3NEd3S1E4MUFCV2JEMFpyTEhTaHJsdXV2UmV2amtvVmplUEM3VkYzclg0WE81YndiV2JxSkVoTTBEWUp0VHVsazhhVFlKdHljb0UxMDdRUDU4L1hqK2NBMWkrWGdUV2Y1REg0ZmtzSDMvK05SeDVoSndFRnk1OGFDN3A2YUxYUjVHL2VBMmx1UlJNVGVzdURkTTZuRVBFNHpneVVndWJKYmljNVdKS1dtYVJkbTRHT0N4WDRBRDc5aHZYWWM1Z21xa09jZCtlUTFSM2x1VExHNzFWbW9GM1ZVNE55NURJc0RYMUYvNTJwdGs1ODlRa3UyeHgyaEJMU0F5d3Vjcy9EVlJkTnR3RlBXd0krOG5IRUMvWklzRUZVUjk2eTFZTTVPUHhNSVVNZjNObXRYY09zZXlEbEQ5blZrdklpM1B0R2FSZlVmZStoTDNJZHcyQVFuY2JzejdZVEo2c0liKzNsWi9uMUg5cDFYR0F5Wk55SFhnbTdyOHhCaVBBQm9NSml5M2FxMlc3RHdLTEdpdUwxdkprMXdOeHYvVzN1RzM2VmQwazNSYXN1Y2hiWXpPRTFvMlFUOVp5S3dJaDA4RzEwMXhQazdua1VYaDJvY0ZnN0lRSW5SVlBJOHVaMVpqNTQ4RFRVSWhZaHZ5SDhUTEhJNWhlaFB3OXIydW5vcFZKMVBlaTNpS2JlYWpzR2FRRDBEVVlIL2hlZnh2QUx0OStmVHAvOHgwWWpNdHhLc3FyU29CNzQrMk1SV0RoWjRYRlcvN1dwcjFaUW1ST2ZzMnBZcU9QbnIxYXRnQkpzeTJzeHc3MkJydFExVXlGNW1yUFdrem1PZ0xYVitkWWg5NmZVblp4NzRlaDBPN3FtUHhxT3F3SzFTdTRlbWNFcCs0cloyazA0SHB3cWMwV00weVF4QTlpWEdPZm1NZkl6YXJnbUNYSlhGdUNRTXMrKzVpaEhkRWRrenFNc2YwMWhraTdIZ2F3YjAvbjc3Nk5EQklUYkplSnV6djZ3ajF6dnhPaUxJdERaMTdGdkZvUUVQTFJJMVptYXRnWFhBeE9QSzVOcTgzc1BxMVZuQ25lcGI2STF1Y09MbU90bUpudGJjN041ekxtYXVBNnh4TmdBU3Evb0FZcTcwTFZ0VTh4aFl4WkkxamoxVlB3S2w0blprYk5zRnd0OGJwMkFHdk10bEpYTFczSk9qZXp4dGlXQU9NS09YNllDYklJcVE0d05nOXlLWExUWUM0UlBwd3VCcTdmK2E1N1lOdUt3YlFleEVFdmF0czhoRE1vdnVtdEp1eGxkclZvcldZLzJJY0hDUFB2QTYzbFU5TjJkVWV5MmE1M25ucExHYzFxa0RmRFlqSVhXSXpyUUZpVzJKb0R3MzVBdDNhR0dvYklCcHJVRXIwY2xOdk1JdldXdmNCOXVhN1hMamFLRlVFOVJDYkxVRmxUMU5MQ0dEMWdXZVIraW1VQ3ZCY01xL3BjdnZzdUFHWWl2NW1zUGNISVNhbDJoY2dtSlFSS3dJOXdDQVZSalh6YnJOSEMyRUc1Wi9IQnBDbHd1MWFFWm9yYVBJalBMYk4vZEJxL1BLYkZWM29POXZMYTRrL3EwRk56dVJNUFlPWHpGMFBVWjkrV0x6b0NyYVgxUkw0bW1aMUQ0cUJnSFdTMDFpQ3pUalFYaUJ0Wlpzc21LWHZBSlA2RHBpclpKUzB3R3JEc3ZTOFdZNU5oOXQ2alpTYzlNR3YzL3ZxYjAvbDNmekVZYko5cFBCUU81VHFraDNNMDIyYzQ4cW1OL0RxTGZVR2Z5OWxuZWxwRDRJOWlkVDFuRVN5WXo3YVdmbm91SWE3TWhiQVlTNHA3Qnd3bWFGeE9IOTNqK25DR1lXcWh3TFFWbjdzWTA4ZlNSRTBiQXF2YVNGZ01URWd0VVJzREdCYlNucWc3UG9CSTdYRWc4TE1mYkNBTlBWOE1iNkhHOEovcko3eHlDREFzVDU2T1BvRG5rMnZqOTJ5UnR0Zk1vdmpsNzRMQlpOMTliUWRLUzZKNHZLM3VNMEdsRm9iL0xqcHBhejFnY2t2TER1VnpLZElWWU1wTys4Vkh1dDdDWjNjZVYwNDd3MElrQ2k1N2F0bDFnc3NBNVMwMm1PVEtEazNMRmxsSDFNZmMwWDVBMWNYQzVLdWRMT3FMTk45eHltUDlnL3d6SU1kd0tHR3hKNDZiZGIwVVFNUlM2MUN0R1VJUVgrWGlJM1FtSVBVNVF3U1V6SU4wa09GNldOSDcvTTFYcDh2di9mSjArdnByOThmYTZqdTdFRWpCclVWOWhqR1JEb2laWXpta0c0WnBFL0c2akJMdjRQM2l1dDJWdnhFUzdZYVhCc0dZRVNSZHFQYSsyUkFNallmTVJYQ1pvWnAxUkdNdmxIM3NOUlh2K0oxaDBvQ1Y5Nm05bHlHeEY2Y2IySkxaWnNhRUVmTEp3OUF1ZkdrU2wwZ2VkMEt3V0Z4MnpyQ1JrRm9zSDRSUVU5TmlXMlNmMUdFTWkxeEJwNjFEWVJuMWN3RE14RDVicVNmZ0FhQTg1QjFEcGRnQ1d5WFlLdFRwbFAxc1kyN0F3bFhWOEVqdzNqSk9jeHQ1cUlIYkRWSkNrdlc0NG5rLzFGdTJIWHZvelliQWV3dHorVU1Oem5pMklweDRab2Q4bHFLWGY5aUVweDRYdWlIYzl4Szlpb3l4TVpDSzJBeHp1TG9FR2o2UW1STUhiSGhpc2F2S0RGTy81eVRhdlh0ZjQ0K1FDWVlxQi84YXl3REFBL1ArTDl4SUVTWTVnenRtRWwyK2l6RHB6NTVrYUsxN0F5Rk83b3dOUzJmblExNGZ3SEdqc3lJNEhFeVliVDMzTEg3ZnFpWGVZQzBiQi9XNlVFYktaMXN6Tk5LR01IQ1J1VnBZSkxoTTBIdjZqUlptems5TUN3S3pVVlBBaDhBeFJxTUZrVGNpc3ZLdFNacEE2bFBRNnNhV3UzalRlaE1jbVlXN1ZGbk42cEpzTVF2WXlWNHgyQVdnWWpFb05FeXExWFVsYkxKSHNEaEI1aUh4MmZyQm5rOW5ZekhUWTV4TkpJeWFpY3JPSk5id2lIb3NNODdwd3E5K2xoYW1lYzNJZUNyMFozc04vZ1pJRjYxRnpjYUdRRHp6T3BjSGR6WkVsc2lIcDV2UTk0WGdodVp5TUhsVFlHU0w3bWU1QmNGT2lDaC9CSE9Wa1BmN3k0REZXZFA0TzBPZmxINzB1cTBHSzVxSFdmNFEyMkdaN05GU1JZcXRuckVWcnVwMUxsVFN0a3dUdFJnWitXUUllZkhFUXE5SFBkSkRLT3FSTkYxOVR1UjMzNXd1di9zTGI5c2hpK1ZOTUVWK25vY2tNbUMxWm1Gb1VacWhNTmVCR0VYdUp2REY0V2RvekNJMVB5ZHRPQXlIekRMWnBZcXdhSDVZclBETTJkaWNHU1FlbDljanQrQ0NvS2YyWWhnYzNSQmVuRTRiQXVBYWk0ZkVtdlFxMmtWM2FVMVJpaVU1NjJWcHY0bUx2OE9Va2tQN3ZWVmxwUFpvcktNYkFrQU9KSi9SQVM4c2VDMjhMdG9aanFsNDN5WisrSkxrWENwVHhiKzE3L3lPdWZyZnhRTzRiSjhrMnFHdjZqRkhqY3F6Sk9hM0hBVmIwMU5jOTNTQWEvSEd4TFVIMjJTNVo4ZGFCQlMvYStpdEZQUHN0RWdoajlMUERsemVGV0V1UEVOaU1wYjBjUGxNSDZ3M1QzM0ZtaUp2UGluUE9MZzhjZ0VjTmlwKzBCRUttL1NnSkFHd1dCSkt1VFdRRlorMWhTWXUxYTRxanp0VEs4Slh5K1BTUzQ0TVdoV2kxd2d5QW95QlZzQ1ZvcC9pSHpPTHVHSzA1dzJ5c3FGM1dKZ2U4K0ozcmRWZmQwcWZROUNBbEptUnNCclBXVVI0cmVXbEdvd2FkcFNFR212cHBGajVMSVY4OXRITFVrcWVKY29Fai9TNWdxMjhVZkNRdVJ4Y29ibGFldzEweG1zV2ZudlJPa0lqYmpCbExDM2h5c1VLbkZoYlJ3eHVaVkxTUFNIOXpVMnpOWmQrb1FOMXVBUkUzWkx3MVcreVVtVHFHR0VPR2l6dEtnZWhNQm1GUDNXYk8vZ3g2UllDTHVaMTVCUzJFUDdlY1dGdDFGOS9CU1l6b0VsbE5IMnR5Y01qZTZ3N3JUK3FaV2FOZWRmZUFsZnNPN1dXZlNhTDJjd1VaVEVTRnF3WlhpMUxkSnVDL3pDSjFxZWl6YkJvd0Vwd29kemo5Y1RxTnEzMlpwQVJPeU1hdUVJN0tUUFZOWUhGS3FDNkVrU3Y5am0rVDZaVDVQV1oyamtNTmpCRWcvNHU0NVFzeHBDb0E0c21pY2dPRldUQUMvZUQxaUxxTUMwZk9ZQ3locGxPcmRjbHVUNXJobGdycVpuVGJ3bUF6dlN1RTZxN1RmTVZCUlpmenhBNHVpY2EySXJGV3ZkRENuYWF0V0FvRmZLcHVZcXQwb1pncHNpdytJbFd4QVRYK2ZUUkJUMEFGdUoraEVOTzI2ZmVzbU5LOHpRNkRKS2N5RjUra2tVMUFUcDcwNjNXWUsxMDViVnpGZGQzdnFjMzlpTEF1cURQRVZMWFBGdWVpYWh5OGhueUNMSTR0VGpLa0Z4Z083ajlXZzBndUozRmFGbndTYmJwOGt1clQrcTFhQitQVm11QVcwR20vbHlDQ3dla045UVJVMGtDNGVkQTROQjd5ejR1WTYzaDVLdjJFZ0dmRDBJZ3k3MEhYTkVGQWVieW4xVlBwQU1mNElxcFpHMlZtN1FnV3RCRFIwaUo4N25TVGR4d2VCK3pobmpkQ0JaNXptY1BxYng0REZrOVFNYTJaQ3hraUJ3djZ2WFVWR1FwMlVmTzlHWUc2UnJPenJwQ1l1Mm42cGF0WWRGYmU2S1c2YSt6UWRGQkZObW5QcnRia0YwMFNsREJUMnNNcnBaR1d3ZU1kekpTTEc5amxzVks2R2RSeEpPVkhJeW9NVTY5cGN3Rm5SVVBtanBpTGdPUk1aWjNuSjZDeVZqdWNlWUM4eGpROUdFR0JKT1FoNThuaGo4MVZacW1jZENsdGFUVjJUN2pVNnVDeVJSTTY5eEdwYkxlZEZoZ3FHMVU1Q2V3NUpnak04UkFZd01XSVdLZ0pYT2toWUVRRmNDTVJ5T243c3F2cnJhZVhnV0FQdU9UM2pMalZBTVhON0Juc3lJQjNPQkZtYzdEZVZ6YzlNRTB5OVRiVU1OaGdra0VmYnJ6a28yQ3BaSzFORk1Fc0l6NUVseG1SWnhZV3p5ZlBxYUFkM0FWc0tKWVRldUJIaGQrSW1iZ2ZvakV4VUNZMlNGQ1g5NDRaQ1ZtUUIyQW5PTVlINWNVZkxFaEJLN2Rhd1hNMVU3b0ZLWnJUYWdua2Q0VzdBWTFMSWcvOW8yMWtFaXRoV3NSbGdiRGJRdzZyUXdIcnpBcmY2MEp2SXBvSEZGK2VlNEkrNmd3RzR2RklMeTJzQ3BlVUV1b01HM2ZRYUxoa3AwUG9zUHNjeER4MmZmbElaUlR6U0RvQ1M0SytnWXVBNUVMK2xQOGJHRVJuaFhLSVg2YzZYTlYyNHlEQW1HUzJHaXN4WWRLNllscVBSSkN0RUxoTEdnRGRNMWdIZXpGOFpHWFJYYkZxMmt2OU05eTRBa2l5U2xyUUoyZ0FLQ3g0L3k4ZUd4dDZwdnhtaG10ZW14Qmlaazl4bFBZZWlJVFRZNEFreVF0NmI5aEZ3NHdQS2VwZGNyeVpzZFBqd1pxbUtvV3k0eFJRTWV5RHhrck95STQvWXlzWmJPeFE3OTE1bkp3QldOMWNBRXd5VjY4WXdpNENtOGFDZ0VENkt5Nm1uM1JrWnI0VDkwZndCSm15OVdLQjRnMmpxb0NPY1BlQm13cHdIV1htZVRKUU5hcHhwYXlYQk9pb0o4ODdOZXNxOFo3eFgzS1ZvR1J6cXl1Mi9qOVBGNWRyc0Jld3cxRks2OVp3UVFqUlo4eDJYZG1lMkNKVWZzNnVhRnpVTHlCVVA0MWgxNXNET290WFVPQ05vUjdYYWR3N2wxdjNRSVhkWmVYZmtSalVYT2xvTXp6amVPanp5VURSdDJrT0FoTEo4N1VhNUdnS1QzM2ZFMDlMZG5KREpzN1VHMXdBNENJdnlSUktNRkloc2ozeUZLVldVWlpKLzdPa05lWWtrRVdwQ1FNUnpaVTBvdFFHbWNobjJ3TTF0aU8raTZ2U1ZHZEF2bjY5WWNBbVMyQnBWODRiUWlPdzRhMVRNTlZBK0dtVXdLQWNnUFZ3YmtGRi9RUzdRaGpLbDg5RUdIU3M2M0lHcDFjQkV5SkVYME5GNXZ2elduN2pqRzQ5V1M1SUMwQjNHaHJya20yT0FiNy9CSkNPc00xMENpTDdVS2FBaXBIc3pSVXNoVllqR0JvK2d5Q3E1bXZRRDkzR1RsU0pFaGtGSlZXZGN4eFFVbEllV2E3MThpSXZsUjRXUzIrM01MdmZuTTZmZnZWZW1HMG5FVHJJVU1rKy9Ialo0bDUwV1hJREZQTWsvbk1YKzJhUzhDRmREbkJsVFpFM0ZyUlA4OEZSeURTY1VJNkQ3R0UvdUNXS3hhQzJ6MFNMMW10cS9nV0xoZUJ2M3RoQXpKakNCNUtxejNXdGp2ZHBJekNiaDRQYmJhdmltaXBwV29KQVdHN0JEWnFrNEtZQk5hV1NVY3RWTzVFWmJPNDQ0dWcvRHdCZEgvcmw5K2RUcjlRZ0hIRkdCSHZ2TmtCT3JKV204UkJoOTZFZTRaR3NCdkJadmdyY0YwLzFqb1EwRjBHS0lESUJMQjFQVEFjMkIySFoyYnB6WVR6QTlnWUtqUGV4ZG1Uc1lxZ0tpc013QXBZS2ZESlRpT0U5cnBSQVVTaHZBeUFiOGFzYlIxOFpZMWwwQVVnTlc3VWFQRW1NY1B3MXRoT0FXYTRwQ0VyOThGa3NzZzJDYkM0Vm5sT0IzcUFXd2NGMUYxMC9XZStqVENwb1QvWlM5dHpZazVrUkJhWkhaU0NubjFlOWROdGlMUXhKcmpjMUFPZ2FEOGdMT2FqN3VETzI4R1pYbXE0d1pVVlNkVk0wMEJlK0ZuVVdzQktnZzZiOUdYRTUvYzBBZGZaS2JKVlNiL3piUXoxQ0tGTjkvQ3pDajUxTWFpeEFNeGt1QVFNd0NWb2pqRWt6RGhwcE1DZEFNM3g3eXcxUTZWNmZ2NGVTR2ZlQkNvVldvaTB6L3k1YjAvWDc3Q0NvaDBicXlBS01vcjhCSmY2WVByVXN0QlhEc0pEY0ozSVhQUzNBRElnUEoxNHJyOUYwMVRHMWwzNmJrMmxFVW9VeGpITGRwb1ZhcGRFZTcwWUR6dGtCRmk4TUlYYVRmWVN6ZEtIazZKYUFERUJJaGxrTXNSR096bktxNjlTQ0VTQUx1RDFqQk1veVpER1VJZmF1c05TVDR5Nm8rMm5yTDY4VUFwNGkwYS8vNHQ0UXAySGRpMXVseEdiSytZNHdLVFJNTm1KckFYdC9BaTR2UE9CR2d2cksyUU5VVG9lWm5aWUdpeUd1SzBCQVZEWjYrRXM3Si8zTXovamU4SEZUSmJ6dmpIeGdXeUR3VWk3YUxFTGp4bTZkbTlDdjhSQVQxdUJjdWFBYVlReEdSWXJWRW40Qk5zWFExVm1tdUZQd29NazZ2Q0JnRDRGbDI4dkFONmNtOXROLzd3MU5KcXBtZUk1SGY1TXFuTGFtV1NKQzdoRWI5bDNvMlhuOVhURzFMTHo5V091VnBQZ1V2YUMxd1dnZTljcEx5QnVKWC9HcEk0NTNqZktKRENLM2RqVFZVSzhnMmkvVm1yc1owRG44RTlCSllUUU1jREdnSFBNeEczUHo4NmxteVFzVnFsb2dMSDVaZXQ3eFhDVkhhcXVTdkJ0N2hvOXB4bEdhYnhsK0plTmZTcWhBWXp0UWlnZHBWV2tEd2xOb2IvSkZHMTh5VnJHSFBET0Nsd1dGbUV6T0N2UTA4SlBaaDEwQmhxNENDSnRBQ1RJdkI5dGdDdnhBUUFSQXlMa1p3MnhyRlpCYjk2MGtoQk05SWhlbTh5aEliUU5rQ3hEb0k1WXF6RldTcEFKR2JVTmRWVFRjN0ttUmVvc0JXWGVxQmIyQkh4ZzVBYXVjWTVaemhLaFB5OURnV3U4ODhzUHArdnZmZHM2bG1pcTZxenVYTlNrc1ZhNS9BNHVGOU9INEJJZmkxWURNa1kvZDhrUWM3REJDRTFIRVd3ZUE3VTBKQ0JMd0JXN0pBaWJIdDkxcTY0MXgvV0J4L1JtNVZZL1lCdytIM0xIQU5Rc1c2TzBaL3BJd0RvdytqN1hETlhmQnloMjI2YStNdTJHU2tDbWl2M1VPRVR0Wi9MeHpuWUJpWngrLzNkTy9oVGdyTmYxQlh4VGsyVVB2a3c3TTJlZVl0N0FaUVlxa29EQlhIdHcrZm1ua0dkN0RVTDFFV3VsVHRCbi9RQm9aS2lNb1VOWGlSMVI1Q1NaS2ZaTlIzc21FWHBrTTRJbVFVRElKaFF3c2h6c1VpM0ZiMUF4NVdYSlo0S05TdWNrMDNTL3ZiT2NNaGZQaWQ1WlRoSWZMRVpCRDBZamVEcEx3bjFvSWJTQVBkRjMvZmI1ZFBwbnY4MFRYV2NYMllCUTBFdE5FcUJ5Y0ZrWCtVMXcyVDZ5eEFPejFBdlZza0x6cm9WWjFweGZWbTRXSVU5bWF2NFdUczhpRGM0QUFDQUFTVVJCVk1tdENXRzgrRk5lQTFrNXRLZkdXakpMM1ZOUEtHc1FjTEdQbkc3WkJRMVJCNXlZbEFGQVFpNHR3Qnk3Q24reURWQWJMRVIwUWNUcmF5eU1jeE1CSDRKRm9WN3RraEYrQ3pFd1YzUEZSMFgyNlhUNjU3NEpjVS9RMG9wd0FvQVkyb1ZFNkMxblh6cjgzdjkxUGIyZUtlaE5jNUdoYUp5NkV3K1ErUmhadVVLWWlMYzM2NTc1REVWOGhxQWIxb09RV2dKSUtqN0xBcFVFV2hQem90WDlNa0h2dFN2ZXREKy90V3VPZE52OVhQcDdpNmMweGtOWm81aXFRT1BXUWh2NDhpN1ZkbWhoVWJOU3R6ZUtIbjFmYkhiY0NYdGxYNVVBQ2N4eE1FSmgxKytlVHVjLy8wMWRQZzBIRmc3dFB3VVhhNGhzT2dSN3hTSy9jZUVUWE9mWDY4ZGtLTy9IQWtDOEtWQUJKbFlDQnFPMFVpeU1rZUJCZUl2alpFaU00Mncxd28yZ2o0MDBGRTQwYVNkR3ZGZi9qOXR2TXdBVGZMdy9DSVQydmpKSncxNjNDMm9mZ2s4VDVReHRhaE1NU3lOWWFKTTl3dk5xNFZZMTNyZ1JlQXo2aytlUzRYdzh5cm13QlVIMisxLzc1RjY1bU1GYXpqbzZ2VitFUEZncXhmd2h1TUJVT2Q4UXQwcE96N2Q5R25NbFUrQTRDSjdXdEFlRzA1QXBZRXN3YURqRWpoTVQyc21xUUdtZ1M2ajJpOElySzUrTEkxZGZxdDZjVERJSHFmU1U3SU9NZ0kzSlV2b04xazlQeHFuQnJ0ZW1pQWZXRXVQb2EwMGNWQmxvWk0wQy9rVkhOdVk2S3FpZVQ2ZGZQcDlPdndQZlM2OGZXU3pYamdDNHdGcXV0MmhWdUEweG1PdHlSVmdFVTFIQSs5RGhDdGhudkw2SU1NejVpQVMyLzBUR3dSQlc3M1ZoWDB3aklVMlR3QUcwM2dNR1FDWGp0YjNGeWRGNXhrV2FKTllEWUd5a0xOSHYrbnBmWDE4MDAyQW83alBhc25aWnBPZytqcm1XaW1LNWlrWFg1ZDZhcUo4RjZ3SlIxaXE1NEhCQ2QveGl5em44K2EveXVaa3gwS05URlV3VmZmVnN4Y0hBWlVmclBYQVJWRElYMGNGcFJ5cG1xWUlwd0ZVRHI2Wm9XUlhUY2NjblJtak1HMmZEVXN5WTFiMXZsMG1vYjRtTVFUd0JKcjVKaFV4SGZsenp6aTRZV3RVM3VVdjB5UStCWFl0STE1NGN5SmtjNkVyVUhlUzIzZXlHOVhaNVAvWitFRlU2a25nczJXVmIybk1ITU52ZG43TUdRL2JqWTBDMTlwamdDZ2xrQU11UW1FRGNhUzVtZ3RSWjJMZXpHRW91REluUkVWRkRwd3hGSGdtbkYzcUxOVVhjREFTbGdvZzNpcXFuQk5Kb3phR0drMFBvYWVHTUdnUXZ2akFGK0liQ1NvUjNNUGh3eXZZZVNnbldMR3AzcG1GREFodWI4M3N0RzF3eVQrZ3ZDYmRrMC9UWk9IK1hYS3ZIUTZ6dEVwT0R0dTRGWXhZV3Y0MEp1L2xmZ292aEVIcFlMUWlDVHNKWUYvUUVGeGNVeWZVZ0VOTGdkZG1BK2pwY1k4Q3l0Sk92cTRnWERaYTlnQUxPM1d0QTZkSWcySUMyY0ZOY2sxRkFiN2VDYXBDNUduVFRMcnk4cXFJMEc5Unc1eXZoVjd2Tk1HeUR2YnB3YjhZc1FweUdabUlrZFJkNjBXeXh4OHdpYmNmemZNWU5rMTBaT3kwdzBXVWxvVi93a1RTU2Jyc200alF6akQxV3ZmSHYxNUNJaTM4QUxnRU9pK2JwYjhXWmFDOVhXZ1dwNVJnY2k3VVl3cWdObHlkbEpHQjZieGZaYkM3QjFDQzF3VmNkQWE3ZUFqYjFtYnJNbDREVGJ1Qml1eEtoeFhJUnBaSnB5SkRDSnBXc2lhQlAzU1MyaGVvc2ozQUVMZGlPNE9LWEs3aG1GVUpZekgvVmEzVUV0dCt6NWREbFRYNUdNc0ZtbkJKWUJOa0VWd3A2MTFxM3dZVm9sek9sOCs4bTV0Vis2STlmSVhNR3cvUzZZNFZHRUpEVUc1bW10cy92dE1OY0hicnd0V3lkZ0pudnRKNzJUWGpNQVkzMzVuNzY5REw2VzFyK0dmYkQ5TGZFN1hkdytSY0FnSzY1b0tzRUxEbnRyUWczZXNrR3M3VitONFoxUGYvdm5uMXQzRjV3TEhieUlVRjJtRmtpczBYL3JyaVR5MFJsdHZnb3VHQ01Kck0wSDZzNkhyckhoZGQzVm9LR1dCN2dZT1hVWWhzV1V0dCtGeWhqbDZNaG4remk0OWFuZS9sTEEwQXlaZ3VqTlJkZi9DaTFCV2hMRUl5dGlWREJzMk91Q1M3U0pFOFczYW9ONkZ5MktWbjB3SWFZSlE5Ly9wUE5HaEttd3gwZE9scktQUm9TeVRLM3dtS3Q0ckFwKzZUYlhvdmY4dnRpMzR5TkFZWFVaZ25HNGZBUFpzb2tRY0dtKzhYdnNkN0VEa2FBNEFEU2ZzdTZYVHZ6Y0hwK2I4eExNQkIwTS9TQnd6SlVTcGowUWZlbE40cnBkSEt1QWkxZGVQbDgyaGtnbEFRelQyeE9ZK1BmSTJUdWlKNFJKTit6a1BoTlRFbkwvNkJuWEo2d2ptaHZMaUd4R0dHcnVSSmNhVitFVlYzVEI2c1BIaVFJMzB4V1cxYnJBOWxHNjNxUWNPaDQ5UE9RRnB5U05mVzZnR3dMRnYvT1BUdmw5Z08wYXpoakRGV0ZGSytwUkhFQWdVMlNpWkxhU2ovcGRncXVBRnYzdmpMc2tibnVnYXRSNmRpWFRrUnhZbjVBemZObXRmdjJHM3YyWlA5TXp0VGl3OW5KVkpwTlNpWjFESzRjaEJvdURsc1ZvR01qYmJlWmt5dTh6eDVoamd6SHpDMVd0NGtUY1A5TUhYNkNTNWtOMzFWZ1ZJRWFSOWRBTjRDa2Q2MXV0d0JNUWsxOHBrTG1BakN5MSt4K3lJWGtaRjVqbTJoUjRKckY5QjF6OFRYL3lSQW9yS1hnVCsyMVliVkQ1b3FCckxmdCtVLytIQ1RVc2pHR09URjNlRnJCTGhnQjdHWVBMcVowbklTQksrckR4LzRzWHdVcDBGQmhzWmVHMURpVmFCbWhNNWV0akJSbTJob1VoVzFsYUlLTEVkR3hxZlA2QjdoSVFnMVZ1Q0hrTlpYclJ3Sy9nd3EyNXBBd0VRNFI5Z1JJeW5EKzhGQUNjaWtOcVFrckRyczlFeEw3WHNBVnFDdG1GVkQ3d0lBNkgrQ3RBb2Z0elJiL2MxRXZGd29BcXBhY05DMXJkdlJONXJKcXR0eTV6and4L3RsUkd0OFIxbitCb2svT1lHdXptcDBFZHpCV0FWRVpKOEJmZDFCK040SEMyTzkvQTFoa3FIa0ZHeFBLUGllRnlUVnN6dmRpbXNvZ0NxT2xNNzRCbHpQS0ZPalVYUUt1cUZiSkJJM3h6TWpLR0VPM0pkdE5xNEg3RkdBcHE5MWtMcjMyRmhMOUNTcUNYSVpERHBoOVJ3dUp0NWdMekpCY2NBNmdGZHRWczEreWxRKzJtS3pDYmpIOG5aWFkrRS9EbFNkTFVMV3dwdG1pQTN5V2pycSt5a2tidVJQY0dPMUxEdk9BTWtCekJDaStZNGN6STJTNDNJSEx3NG1DUjYwRkJWZldGRjBiMU95ZlcrRGFySlRqeDdlc1RWR3dTbmtJb3ZBVG1oZGJ3V1VhelZZNzRsUkNzaTF2ZkJxZGFWem0zWjlYcjRWRjZxVWNNbU14T1lZQVNvVVY3OGJnTEI2YXJNSXNBY0RlTnBOTU43eW91ZVFTVDV6bnZ5ekpOTFBCZHFFR1M0Mkx1THVtZW5jbkFXSkVvQW9EWGhxQ29NV2Fackx4d0JmVVNqajdjTWxXRzRhNkJxNG05aTBzWXRFNEsyYnZ3S1hoY0NRYlpNOFc0dlNHMHd0Q0pySHp4SUxMQkZoN0tQeU90ZXd6R2ZiRTV6ci85UHFSK21ZUExySVl3TVV3U1RaaC9aRWhTb0NWckNRbEhvWklOVWJ6WnBLVFBRSlZnVzdHdUxvYmprQjA5UG9Dc0x6ZERSd1JaM2Jnb3VqbCs3ZkFaZHVtM3pYQ29vTUwzbEt4WHFDNWdjdWU0T0dISTJyUmdORG1ZZ3ByaFJnOC9tOG0yR1FBQVZkK25nUEgwQlhoaWJUVjJMQ1lhNEtMQmVkTUFzaGlCK0NhTEtYZ1VqYkRuYUhIcHZxcmNZNllwYnloY2tGZVVEZ25WMnlLaVlmTWZ4UVJWbkNwMUovZ0Vxc2lOUnNFK1lhNWtyc093UVZ3SElHclpaOVlkWkJqS2hyTThlYnNLY2UrYXhLY1VGT0FFVnlZWXNnbEhCeGczSTRNUmJBaDI5ZFEreGk0YkVjNTgwZmQ5d2lUczdZWTR5NzZqR3dHd0RLMFo0RGRnQ2pkK0JIS2E3Vm5Rb1RUTkFaa2xQMDI5K3hEb2ZFR2N3VVFaOVpZMlo1ZjVGd2dMcURGM2RuUFdKUlhhNHoxdmpNUXV5YmdzbFBFczZuUjdZYkFlKzlrWldrb2diZDBiKzhaTEVPSkNGMHVDOCs3VGgzL3p3TlhHYVUrRUE2dU1aT0hMQ1EvaTVIRzV6TnJGWEE2cFFKaXVORUkxQ1JhQ2JOeEJKT0I3WHRtdml6WGIxY3FxbDBzRjVwN1VoMmxqRlloY0E4dXZ1OWg2MHVDUzFZeWREeHhvR1ZoNEVnaWV0KzlIN3ZjSkhzVmo4dVFSaVp1VkhkOThSNUFIT0ZBTHFwOVpzTmFQclNjb0xGb0xsRGpLMmRMeThJaldTKzA3M0JXMDFBcG5JTUZSeXFrZFdEbEV1RmxUQ3dKek9wL3lSTGpOOW1wY3hPUFFkRjBrNzBrMUFrSnBLazRtU3NCcUZhQXpPQkpOeDc3dmNsYzJqL3ZIa1dKK0Z3RFA4VWZNMXFzWk00SnRVdzhlbll5YnFaeEJTWjdLZFVHM2NyRFZpWFRPeWpEN2NIRmpGQzhMYnNyUGlFOHVvY0ZFOVUzMVM0S2hqNldHSnQ5TUFyYTZtY0JWc0ZDQXhpTnZYcUpwNEM3WS91eEgrNzZUc2pVYTZwS3VML2VtZXV0NEFxUUFCalVZUUlFZXFQY3Bucng0M09oclFwWXVVWVl3WlhhRFVlMlh0WTlmMWNaSnQ3WERFWUwyVHVOTm9aZ0R5NkNhRXdKczhtMG1iMnhNMVZvTVMwUHRTdGE5MFNxTE13WXIxR3VmbnhlWVhtUGw2R0JRc285TjBKZm5hOTRYbnFIYnV3ZVA0TFpTanl1c3pKWGhrSU1obzg3d2lKMkJjYXJiRE0wVklFcnRkVG9ib2h0N01FSjRwc05LMktLZUdhY2NUaFpvTlJMc2ErVGVTd2JGN3ViZVBGbXUzN0hGLzhZWEhUaDRYS2Jzc24xdU1CT0laY3FKTVpmZmRKcTFSYjdvbTd4MGJIWUNPNnVGVloxTFNwTWpscmlXd0VtRjJtR3gwZkJsUURUOFJNMjJYVTZjS3dlQWhlOXJ2UFpsazJyQkVDZm91YjZDeVJERTFaWUtoNEJ1R1AxRFVnVU9GTEVUaTJnN0xlSzMrVkxGbkNGNFU2R3FYbUlDUzRBaXAwV1doY012R2huUFJhSWt3TlJMZWczZ0x5Z3M0eXlMRERJVzdWVHN5VjYxZWpnYWdMKzgyTHJ3eGJ3U1IwdzdreHNwYW9QSWg1VklpQWFhREtUc04rN3dXVjFSaFhYQ2E0eGhjMHZsQzFMZnVOU0tGT3BhNTNNaElGTEswT1dOcUtadDI5QzhTL2RnS3ZhWHFKK1dKMnBWY3FSc3RCZ3FnUU16a21aYXpKYm5zUElHSk1QbFJubEdwWE9XanNoRHJSbHU4SngzUWRmYVIxeXNNRk5jT25UenhpRzBpRlFvTUdPU0tHTlp3Uko3VEdkZWdyNnRDcDAyd0V1elJCbGJWWS9acTFCM3NLWW1xQUVuTjdGZ2RQdXhCNWtpUG8xQWE1LzRWY3Y1OWR3NkoxNXNoNU01Z28yY25CQlk5a2dGbWhuVjBQL3U1WURyMHh5TXRoaVNmQW9Od0RyalB6bEFPYjd4VWs5ekZ6aitZNDlGS3FtMm9PckpBMGYzd0xHb2NZQ3dOaGs2S1VmR2VqNCt1NmhNWXdwMDk3a3I4bFUvSHZlcVdTd29WbVA5cjJBeStmNFQzQWhHK3hGYU9tZTJNMEVrZ1Bic2hmb3FjNExtYVNFTEFWUnV2Z3pUT0pPbUxycEhvUGw5b1BCaU9VY2RIVzY1ZGdxRFBhbXdxbXpza
Firefox•..•EditProiect Phoenix - Fiama(UY-20372) Al Reports > Empty paProject Phoenix - Figma8 Project Phoenix - FigmaProject Phoenix - FigmaX Jiminny MCP Connector - ProductM Jiminny MailJY-20500) Batch initial sync for S) Feed - jiminny - Sentry8 JiminnyO'Pipelines- jiminy/app= Formalize(SRD-6793] Les Mills activity type:9Search results: calendar I.liminny8 JiminnyJiminny& Edit - Calendar - Engineering - Cor— New TabVIewMistorbookmarksProtllesToolsWindowmelp- app.staging.jiminny.com/ai-reportsAl Reports• Renort namel(Lộ3 Ask Jiminny reports* O Clear allLoss Analysis x(Product Feedback *)NAME #FREQUENCYSHAREDDATEACTIONS100% LzTue 21 Apr 17:43:19C 0 Inspector# ConsoleD Debugger J Network () Style EditorQ Search HTML<!DOCTYPE html>shtml Lang="en"? PerformanceU: Memory »dnz289184C/w290me24Ke-32dm *cgta: 1m C/sng-xanl; bas5 6 4 PHN.."chodv clascelfixed-header Frontend nace-done nace-donel> eventP <div id="app" data-v-app>®</div> (event)• key="113254367" theme_id="g">®</div> Ceventinportents polterevertse oneeorta-he netout abiroctenei cactei etercorea / itth-k Iinportonts z=index: - 1b«div class="intercom-Lightweight-app"> @D</div›/body></html>$No reports have been created yethtml body.tixed-header.Frontend.pace-done.paT Filter Styleselement a(-btn, body El 4-ms-text-size-mez-tont-fe-ture-setengsi-k 1 PThtn. bodv. h1. h2. b2. h4. h5. h6 :':&webkit-font-smoothing: antialiased: Qbody, p:(letter-spacing: 01emJy-18909-automated-reports-ask-iiminnvr1 874522nargin: 1 0g-font-tanity: Late, sans-serif::hov .cls + 0 G01 Layoutvue-ma-hhAl87Tr.ccc:2Select a Flex container or item to- Gridvue-ma-bh4187Tr.css.2vue-ma_hhAl87Tr.ccc.wue-ma-hbAl97Tr.cccx)Overlay GridTa.e• button dODad0OadoOado• button dOOadoMaлAChanges -...
|
NULL
|
|
71397
|
1698
|
11
|
2026-04-22T12:31:03.560322+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776861063560_m1.jpg...
|
Firefox
|
Jiminny — Work
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny
Jiminny...
|
[{"role":"AXRadioButton","text [{"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":"AXRadioButton","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8934468852390544631
|
-4047206013275037311
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny
Jiminny...
|
NULL
|
|
75973
|
1899
|
6
|
2026-04-24T07:16:18.725686+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777014978725_m1.jpg...
|
Finder
|
Work
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:12
--
Folder
CleanShot 2026-04-24 at 09.48.56.mp4
Today at 10:11
832,2 MB
MPEG-4 movie
User Pilot introduction Adi 2026-04-23.mp4
Yesterday at 11:58
724 MB
MPEG-4 movie
Daily 2026-04-23.mp4
Yesterday at 10:32
1,74 GB
MPEG-4 movie
Daily 2026-04-22.mp4
22 Apr 2026 at 10:21
1,36 GB
MPEG-4 movie
Refinement 2026-04-06.mp4
21 Apr 2026 at 11:02
2,41 GB
MPEG-4 movie
Daily 2026-04-21.mp4
21 Apr 2026 at 10:00
567,8 MB
MPEG-4 movie
Refinement 2026-04-20.mp4
20 Apr 2026 at 16:56
4,25 GB
MPEG-4 movie
Daily 2026-04-20.mp4
20 Apr 2026 at 10:06
698,5 MB
MPEG-4 movie
Daily 2026-04-17.mp4
17 Apr 2026 at 10:16
1,16 GB
MPEG-4 movie
Daily 2026-04-16.mp4
16 Apr 2026 at 10:00
513,4 MB
MPEG-4 movie
Planning 2026-04-15.mp4
15 Apr 2026 at 11:14
2,75 GB
MPEG-4 movie
Retro 2026-04-14.mp4
14 Apr 2026 at 17:37
1,44 GB
MPEG-4 movie
Daily 2026-04-14.mp4
14 Apr 2026 at 10:09
924,4 MB
MPEG-4 movie
User pilot (Adi) 2026-04-09.mp4
9 Apr 2026 at 14:47
362,6 MB
MPEG-4 movie
Daily 2026-04-09.mp4
9 Apr 2026 at 10:07
748,8 MB
MPEG-4 movie
Daily 2026-04-08.mp4
8 Apr 2026 at 10:13
1,04 GB
MPEG-4 movie
Daily 2026-04-07.mp4
7 Apr 2026 at 10:01
575,5 MB
MPEG-4 movie
Daily 2026-04-06.mp4
6 Apr 2026 at 10:08
720,5 MB
MPEG-4 movie
Daily 2026-04-03.mp4
3 Apr 2026 at 10:21
1,02 GB
MPEG-4 movie
Planning 2026-04-01 & task split.mp4
1 Apr 2026 at 12:20
4,68 GB
MPEG-4 movie
Retro 2026-03-31.mp4
31 Mar 2026 at 18:29
3,4 GB
MPEG-4 movie
Daily 2026-03-31.mp4
31 Mar 2026 at 10:10
923,6 MB
MPEG-4 movie
Refinement 2026-03-30.mp4
30 Mar 2026 at 17:12
2,77 GB
MPEG-4 movie
Daily 2026-03-30.mp4
30 Mar 2026 at 10:05
641,8 MB
MPEG-4 movie
Daily 2026-03-27.mp4
27 Mar 2026 at 10:09
884,3 MB
MPEG-4 movie
Daily 2026-03-26.mp4
26 Mar 2026 at 9:59
476,6 MB
MPEG-4 movie
Daily 2026-03-24.mp4
24 Mar 2026 at 10:00
550,8 MB
MPEG-4 movie
Refinement 2026-03-23.mp4
23 Mar 2026 at 17:03
3,44 GB
MPEG-4 movie
Daily 2026-03-23.mp4
23 Mar 2026 at 10:00
438,9 MB
MPEG-4 movie
BE chapter 2026-03-20.mp4
20 Mar 2026 at 11:46
1,68 GB
MPEG-4 movie
Daily 2026-03-20.mp4
20 Mar 2026 at 10:06
430,4 MB
MPEG-4 movie
Planing 2026-03-18-converted.mp4
19 Mar 2026 at 12:01
2,38 GB
MPEG-4 movie
Refinement 2026-02-09-converted.mp4
19 Mar 2026 at 11:35
2,26 GB
MPEG-4 movie
Daily 2026-03-19.mp4
19 Mar 2026 at 9:57
386,3 MB
MPEG-4 movie
Review 2026-03-18.mp4
18 Mar 2026 at 16:20
705,8 MB
MPEG-4 movie
Planing 2026-03-18.mp4
18 Mar 2026 at 11:14
2,78 GB
MPEG-4 movie
Retro 2026-03-17.mp4
17 Mar 2026 at 17:40
1,53 GB
MPEG-4 movie
Daily 2026-03-17.mp4
17 Mar 2026 at 10:18
1,2 GB
MPEG-4 movie
Refinement 2026-03-16.mp4
16 Mar 2026 at 16:55
4,19 GB
MPEG-4 movie
Daily 2026-03-16.mp4
16 Mar 2026 at 10:02
592,2 MB
MPEG-4 movie
Daily 2026-03-13.mp4
13 Mar 2026 at 10:12
1,02 GB
MPEG-4 movie
1-1 2026-03-12.mp4
12 Mar 2026 at 18:35
637,6 MB
MPEG-4 movie
Daily 2026-03-12.mp4
12 Mar 2026 at 10:10
978,7 MB
MPEG-4 movie
Daily 2026-03-11.mp4
11 Mar 2026 at 10:06...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Favourites","depth":6,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"jiminny","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"AirDrop","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Recents","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Applications","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Documents","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Downloads","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"iCloud","depth":6,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"iCloud Drive","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Sync folder","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Locations","depth":6,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":6,"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Network","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Tags","depth":6,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"CRM","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Orange","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Red","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Yellow","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Green","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Blue","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Purple","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"All Tags…","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Name","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Date Modified","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Size","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Kind","depth":7,"role_description":"text"},{"role":"AXTextField","text":"2026","depth":7,"value":"2026","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today at 10:12","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"role_description":"text"},{"role":"AXTextField","text":"CleanShot 2026-04-24 at 09.48.56.mp4","depth":7,"value":"CleanShot 2026-04-24 at 09.48.56.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today at 10:11","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"832,2 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"User Pilot introduction Adi 2026-04-23.mp4","depth":7,"value":"User Pilot introduction Adi 2026-04-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Yesterday at 11:58","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"724 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-23.mp4","depth":7,"value":"Daily 2026-04-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Yesterday at 10:32","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,74 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-22.mp4","depth":7,"value":"Daily 2026-04-22.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"22 Apr 2026 at 10:21","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,36 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-04-06.mp4","depth":7,"value":"Refinement 2026-04-06.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"21 Apr 2026 at 11:02","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,41 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-21.mp4","depth":7,"value":"Daily 2026-04-21.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"21 Apr 2026 at 10:00","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"567,8 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-04-20.mp4","depth":7,"value":"Refinement 2026-04-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Apr 2026 at 16:56","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"4,25 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-20.mp4","depth":7,"value":"Daily 2026-04-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Apr 2026 at 10:06","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"698,5 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-17.mp4","depth":7,"value":"Daily 2026-04-17.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"17 Apr 2026 at 10:16","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,16 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-16.mp4","depth":7,"value":"Daily 2026-04-16.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 Apr 2026 at 10:00","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"513,4 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-04-15.mp4","depth":7,"value":"Planning 2026-04-15.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 Apr 2026 at 11:14","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,75 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-04-14.mp4","depth":7,"value":"Retro 2026-04-14.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 17:37","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,44 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-14.mp4","depth":7,"value":"Daily 2026-04-14.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 10:09","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"924,4 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"User pilot (Adi) 2026-04-09.mp4","depth":7,"value":"User pilot (Adi) 2026-04-09.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9 Apr 2026 at 14:47","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"362,6 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-09.mp4","depth":7,"value":"Daily 2026-04-09.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9 Apr 2026 at 10:07","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"748,8 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-08.mp4","depth":7,"value":"Daily 2026-04-08.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8 Apr 2026 at 10:13","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,04 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-07.mp4","depth":7,"value":"Daily 2026-04-07.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"7 Apr 2026 at 10:01","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"575,5 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-06.mp4","depth":7,"value":"Daily 2026-04-06.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6 Apr 2026 at 10:08","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"720,5 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-03.mp4","depth":7,"value":"Daily 2026-04-03.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3 Apr 2026 at 10:21","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,02 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-04-01 & task split.mp4","depth":7,"value":"Planning 2026-04-01 & task split.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1 Apr 2026 at 12:20","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"4,68 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-03-31.mp4","depth":7,"value":"Retro 2026-03-31.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"31 Mar 2026 at 18:29","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"3,4 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-31.mp4","depth":7,"value":"Daily 2026-03-31.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"31 Mar 2026 at 10:10","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"923,6 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-03-30.mp4","depth":7,"value":"Refinement 2026-03-30.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"30 Mar 2026 at 17:12","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,77 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-30.mp4","depth":7,"value":"Daily 2026-03-30.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"30 Mar 2026 at 10:05","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"641,8 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-27.mp4","depth":7,"value":"Daily 2026-03-27.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"27 Mar 2026 at 10:09","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"884,3 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-26.mp4","depth":7,"value":"Daily 2026-03-26.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"26 Mar 2026 at 9:59","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"476,6 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-24.mp4","depth":7,"value":"Daily 2026-03-24.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"24 Mar 2026 at 10:00","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"550,8 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-03-23.mp4","depth":7,"value":"Refinement 2026-03-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"23 Mar 2026 at 17:03","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"3,44 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-23.mp4","depth":7,"value":"Daily 2026-03-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"23 Mar 2026 at 10:00","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"438,9 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"BE chapter 2026-03-20.mp4","depth":7,"value":"BE chapter 2026-03-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Mar 2026 at 11:46","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,68 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-20.mp4","depth":7,"value":"Daily 2026-03-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Mar 2026 at 10:06","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"430,4 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Planing 2026-03-18-converted.mp4","depth":7,"value":"Planing 2026-03-18-converted.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"19 Mar 2026 at 12:01","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,38 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-02-09-converted.mp4","depth":7,"value":"Refinement 2026-02-09-converted.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"19 Mar 2026 at 11:35","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,26 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-19.mp4","depth":7,"value":"Daily 2026-03-19.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"19 Mar 2026 at 9:57","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"386,3 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Review 2026-03-18.mp4","depth":7,"value":"Review 2026-03-18.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"18 Mar 2026 at 16:20","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"705,8 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Planing 2026-03-18.mp4","depth":7,"value":"Planing 2026-03-18.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"18 Mar 2026 at 11:14","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,78 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-03-17.mp4","depth":7,"value":"Retro 2026-03-17.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"17 Mar 2026 at 17:40","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,53 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-17.mp4","depth":7,"value":"Daily 2026-03-17.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"17 Mar 2026 at 10:18","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,2 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-03-16.mp4","depth":7,"value":"Refinement 2026-03-16.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 Mar 2026 at 16:55","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"4,19 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-16.mp4","depth":7,"value":"Daily 2026-03-16.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 Mar 2026 at 10:02","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"592,2 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-13.mp4","depth":7,"value":"Daily 2026-03-13.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 Mar 2026 at 10:12","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,02 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"1-1 2026-03-12.mp4","depth":7,"value":"1-1 2026-03-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 Mar 2026 at 18:35","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"637,6 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-12.mp4","depth":7,"value":"Daily 2026-03-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 Mar 2026 at 10:10","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"978,7 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-11.mp4","depth":7,"value":"Daily 2026-03-11.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"11 Mar 2026 at 10:06","depth":7,"role_description":"text"}]...
|
8934418363382349782
|
8618363347829170507
|
idle
|
accessibility
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:12
--
Folder
CleanShot 2026-04-24 at 09.48.56.mp4
Today at 10:11
832,2 MB
MPEG-4 movie
User Pilot introduction Adi 2026-04-23.mp4
Yesterday at 11:58
724 MB
MPEG-4 movie
Daily 2026-04-23.mp4
Yesterday at 10:32
1,74 GB
MPEG-4 movie
Daily 2026-04-22.mp4
22 Apr 2026 at 10:21
1,36 GB
MPEG-4 movie
Refinement 2026-04-06.mp4
21 Apr 2026 at 11:02
2,41 GB
MPEG-4 movie
Daily 2026-04-21.mp4
21 Apr 2026 at 10:00
567,8 MB
MPEG-4 movie
Refinement 2026-04-20.mp4
20 Apr 2026 at 16:56
4,25 GB
MPEG-4 movie
Daily 2026-04-20.mp4
20 Apr 2026 at 10:06
698,5 MB
MPEG-4 movie
Daily 2026-04-17.mp4
17 Apr 2026 at 10:16
1,16 GB
MPEG-4 movie
Daily 2026-04-16.mp4
16 Apr 2026 at 10:00
513,4 MB
MPEG-4 movie
Planning 2026-04-15.mp4
15 Apr 2026 at 11:14
2,75 GB
MPEG-4 movie
Retro 2026-04-14.mp4
14 Apr 2026 at 17:37
1,44 GB
MPEG-4 movie
Daily 2026-04-14.mp4
14 Apr 2026 at 10:09
924,4 MB
MPEG-4 movie
User pilot (Adi) 2026-04-09.mp4
9 Apr 2026 at 14:47
362,6 MB
MPEG-4 movie
Daily 2026-04-09.mp4
9 Apr 2026 at 10:07
748,8 MB
MPEG-4 movie
Daily 2026-04-08.mp4
8 Apr 2026 at 10:13
1,04 GB
MPEG-4 movie
Daily 2026-04-07.mp4
7 Apr 2026 at 10:01
575,5 MB
MPEG-4 movie
Daily 2026-04-06.mp4
6 Apr 2026 at 10:08
720,5 MB
MPEG-4 movie
Daily 2026-04-03.mp4
3 Apr 2026 at 10:21
1,02 GB
MPEG-4 movie
Planning 2026-04-01 & task split.mp4
1 Apr 2026 at 12:20
4,68 GB
MPEG-4 movie
Retro 2026-03-31.mp4
31 Mar 2026 at 18:29
3,4 GB
MPEG-4 movie
Daily 2026-03-31.mp4
31 Mar 2026 at 10:10
923,6 MB
MPEG-4 movie
Refinement 2026-03-30.mp4
30 Mar 2026 at 17:12
2,77 GB
MPEG-4 movie
Daily 2026-03-30.mp4
30 Mar 2026 at 10:05
641,8 MB
MPEG-4 movie
Daily 2026-03-27.mp4
27 Mar 2026 at 10:09
884,3 MB
MPEG-4 movie
Daily 2026-03-26.mp4
26 Mar 2026 at 9:59
476,6 MB
MPEG-4 movie
Daily 2026-03-24.mp4
24 Mar 2026 at 10:00
550,8 MB
MPEG-4 movie
Refinement 2026-03-23.mp4
23 Mar 2026 at 17:03
3,44 GB
MPEG-4 movie
Daily 2026-03-23.mp4
23 Mar 2026 at 10:00
438,9 MB
MPEG-4 movie
BE chapter 2026-03-20.mp4
20 Mar 2026 at 11:46
1,68 GB
MPEG-4 movie
Daily 2026-03-20.mp4
20 Mar 2026 at 10:06
430,4 MB
MPEG-4 movie
Planing 2026-03-18-converted.mp4
19 Mar 2026 at 12:01
2,38 GB
MPEG-4 movie
Refinement 2026-02-09-converted.mp4
19 Mar 2026 at 11:35
2,26 GB
MPEG-4 movie
Daily 2026-03-19.mp4
19 Mar 2026 at 9:57
386,3 MB
MPEG-4 movie
Review 2026-03-18.mp4
18 Mar 2026 at 16:20
705,8 MB
MPEG-4 movie
Planing 2026-03-18.mp4
18 Mar 2026 at 11:14
2,78 GB
MPEG-4 movie
Retro 2026-03-17.mp4
17 Mar 2026 at 17:40
1,53 GB
MPEG-4 movie
Daily 2026-03-17.mp4
17 Mar 2026 at 10:18
1,2 GB
MPEG-4 movie
Refinement 2026-03-16.mp4
16 Mar 2026 at 16:55
4,19 GB
MPEG-4 movie
Daily 2026-03-16.mp4
16 Mar 2026 at 10:02
592,2 MB
MPEG-4 movie
Daily 2026-03-13.mp4
13 Mar 2026 at 10:12
1,02 GB
MPEG-4 movie
1-1 2026-03-12.mp4
12 Mar 2026 at 18:35
637,6 MB
MPEG-4 movie
Daily 2026-03-12.mp4
12 Mar 2026 at 10:10
978,7 MB
MPEG-4 movie
Daily 2026-03-11.mp4
11 Mar 2026 at 10:06...
|
NULL
|
|
67568
|
1520
|
19
|
2026-04-21T15:49:38.211515+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776786578211_m1.jpg...
|
PhpStorm
|
faVsco.js – console [STAGING]
|
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
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
whereHas
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
3/3
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
16
7
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Repositories;
use Carbon\CarbonImmutable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
class AutomatedReportsRepository
{
/**
* Create a new automated report
*
* @param array $data
*
* @return AutomatedReport
*/
public function create(array $data): AutomatedReport
{
return AutomatedReport::create($data);
}
/**
* Find an automated report by UUID
*
* @param string $uuid
*
* @return AutomatedReport|null
*/
public function findByUuid(string $uuid): ?AutomatedReport
{
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();
}
public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport
{
if (is_numeric($idOrUuid)) {
return AutomatedReport::find((int) $idOrUuid);
}
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();
}
/**
* Retrieve all standard (non-Ask Jiminny) automated reports.
*
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAllStandardReports(
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->get();
}
/**
* Retrieve all Ask Jiminny reports created by the given user.
*
* @param User $user The user whose reports to retrieve.
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAskJiminnyReportsByUser(
User $user,
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->where('created_by', $user->getId())
->get();
}
private function buildSortedQuery(string $sortColumn, string $sortDirection): \Illuminate\Database\Eloquent\Builder
{
$allowedColumns = ['created_by', 'created_at'];
if (! in_array($sortColumn, $allowedColumns)) {
$sortColumn = 'created_at';
}
$sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';
$query = AutomatedReport::query()->with(['creator', 'team']);
if ($sortColumn === 'created_by') {
$query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')
->orderByRaw("users.name COLLATE utf8mb4_unicode_ci {$sortDirection}")
->select('automated_reports.*');
} else {
$query->orderBy($sortColumn, $sortDirection);
}
return $query;
}
/**
* Get all active Ask Jiminny reports whose expiry date has passed.
*
* @return Collection<AutomatedReport>
*/
public function getExpiredActiveAskJiminnyReports(): Collection
{
return AutomatedReport::where('status', true)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->whereNotNull('expires_at')
->where('expires_at', '<', now()->toDateString())
->get();
}
/**
* Get all active and enabled reports with active teams for the specified frequency.
*
* @param string $frequency
*
* @return Collection<AutomatedReport>
*/
public function getActiveReportsByFrequency(string $frequency): Collection
{
return AutomatedReport::where('automated_reports.status', true)
->where('automated_reports.frequency', $frequency)
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->where('teams.status', Team::STATUS_ACTIVE)
->where(function ($query) {
$query->whereNull('automated_reports.expires_at')
->orWhere('automated_reports.expires_at', '>=', now()->toDateString());
})
->select('automated_reports.*')
->get();
}
/**
* Update an automated report
*
* @param AutomatedReport $report
* @param array $data
*
* @return AutomatedReport
*/
public function update(AutomatedReport $report, array $data): AutomatedReport
{
$report->update($data);
return $report;
}
/**
* Create a new automated report result.
*
* @param array $data The data to create the automated report result with.
*
* @return AutomatedReportResult The newly created automated report result.
*/
public function createResult(array $data): AutomatedReportResult
{
return AutomatedReportResult::create($data);
}
/**
* Find an automated report result by UUID.
*
* @param string $uuid The UUID to find the automated report result with.
*
* @return AutomatedReportResult|null The automated report result if found, otherwise null.
*/
public function findResultByUuid(string $uuid): ?AutomatedReportResult
{
return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();
}
public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('uuid', AutomatedReportResult::toOptimized($uuid))
->whereHas('report', static function ($query) use ($user): void {
$query->where('team_id', $user->getTeamId())
->where('created_by', $user->getId());
})
->first();
}
public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('parent_id', $result->getId())
->where('media_type', $type)
->first();
}
public function findLatestDefaultOrFailedResult(AutomatedReport $report): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
->latest()
->first();
}
public function getGeneratedNotSentResults(): Collection
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNull('sent_at')
->where('status', AutomatedReportResult::STATUS_GENERATED)
->whereHas('report')
->with('report')
->get();
}
public function getPaginatedUserReports(
User $user,
ReportSort $sort,
ReportSortDirection $sortDirection,
int $resultsPerPage,
int $page,
?Carbon $fromDate,
?Carbon $toDate,
array $teamIds,
array $reportTypes,
?string $name,
): LengthAwarePaginator {
$query = AutomatedReportResult::query()
->whereNotNull('automated_report_results.generated_at')
->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')
->where(fn (Builder $q) => $this->applyUserAccessScope($q, $user))
->orderByRaw("$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}")
->select('automated_report_results.*')
->with('report.team');
if ($fromDate !== null && $toDate !== null) {
$query->whereBetween('generated_at', [$fromDate, $toDate]);
}
if (! empty($teamIds)) {
$query->where(function ($q) use ($teamIds) {
foreach ($teamIds as $id) {
$q->orWhereJsonContains('automated_reports.groups', $id);
}
});
}
if (! empty($reportTypes)) {
$query->whereIn('automated_reports.type', $reportTypes);
}
if (! empty($name)) {
$query->whereLike('name', "%$name%");
}
return $query->paginate($resultsPerPage, ['*'], 'page', $page);
}
public function countUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNotNull('sent_at')
->whereHas('report', function ($q) use ($user) {
$q->where('team_id', $user->getTeamId())
->whereJsonContains('recipients->users', $user->getId());
})
->count();
}
/**
* Restrict a query on the automated_reports table to reports the given user is allowed to see.
*
* Matches the customer-facing audience:
* - explicit user recipients (recipients.users)
* - members of any of the report's groups (Ask Jiminny reports)
*/
private function applyUserAccessScope(Builder $query, User $user): void
{
$userId = $user->getId();
$groupId = $user->getGroupId();
$query
->where('automated_reports.team_id', $user->getTeamId())
->where(function (Builder $q) use ($userId, $groupId): void {
$q->whereJsonContains('automated_reports.recipients->users', $userId);
if ($groupId !== null) {
$q->orWhere(function (Builder $sub) use ($groupId): void {
$sub->where('automated_reports.type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->whereJsonContains('automated_reports.groups', $groupId);
});
}
});
}
/**
* Get report IDs for a specific team
*
* @param Team $team
*
* @return \Illuminate\Support\Collection
*/
public function getReportIdsByTeam(Team $team): \Illuminate\Support\Collection
{
return AutomatedReport::where('team_id', $team->getId())->pluck('id');
}
/**
* Get all reports for a specific team
*
* @param Team $team
*
* @return Collection
*/
public function getReportsByTeam(Team $team): Collection
{
return AutomatedReport::where('team_id', $team->getId())->get();
}
/**
* Get all report results for a specific report
*
* @param AutomatedReport $report
*
* @return Collection
*/
public function getResultsByReport(AutomatedReport $report): Collection
{
return $this->getResultsByReportQuery($report)->get();
}
public function getResultsByReportQuery(AutomatedReport $report): Builder
{
return AutomatedReportResult::where('report_id', $report->getId());
}
public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder
{
$reportIds = $this->getReportIdsByTeam($team);
return AutomatedReportResult::query()->whereIn('report_id', $reportIds)
->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);
}
/**
* @param int|null $teamId Optional team ID to filter results
*
* @return \Illuminate\Support\Collection<int, int> Collection of team IDs
*/
public function getTeamIdsWithReportsResults(?int $teamId = null): \Illuminate\Support\Collection
{
$query = DB::table('automated_reports')
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->select('teams.id')
->distinct();
if ($teamId !== null) {
$query->where('teams.id', $teamId);
}
return $query->pluck('teams.id');
}
}
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
1
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM teams WHERE id = 1;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;
SELECT * FROM crm_fields WHERE id = 2234;
SELECT * FROM crm_field_values WHERE crm_field_id = 2234;
select * from crm_profiles where user_id = 143;
select * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO
select * from business_processes where crm_configuration_id = 39;
# 01941000000H669AAC, 01941000000H66JAAS
select * from record_type_field_values
where record_type_id IN (24);
select * from crm_field_values where id IN (2730);
select * from crm_configurations where id = 39;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce'; #1035
select * from users where team_id = 1; # 222 group 3
SELECT * FROM activities WHERE user_id = 222 order by id desc;
select * from sidekick_settings where team_id = 1;
select * from teams where id = 1;
select * from team_features where team_id = 1;
select * from activities where crm_configuration_id = 2
and provider = 'ms-teams' and id = 608765;
SELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';
select * from sidekick_settings where team_id = 2;
SELECT * FROM activities WHERE id = 608660;
select * from activity_summary_logs where activity_id = 608660;
select * from ai_prompts where transcription_id = 11214;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;
# id: 608818, crm: 59628809737
SELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;
# id: 608821, crm: 59632069252
SELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,
playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,
scheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at
FROM activities a
join calendar_events ce on a.calendar_event_id = ce.id
WHERE a.id IN (608818, 608821);
select * from users where team_id = 1;
select * from team_settings where team_id = 1;
select * from crm_profiles where crm_configuration_id = 39 order by user_id;
select * from team_features where team_id = 1;
select * from users where team_id = 2;
SELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639
# Preslava N. Ivanova, grou id 3
SELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;
select * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';
select
a.id,
a.type,
a.scheduled_start_time,
a.actual_start_time,
a.created_at,
a.opportunity_id,
a.status
FROM activities a
WHERE opportunity_id = 344
and status IN ('completed', 'received', 'delivered')
and (
(a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))
;
SELECT * FROM users WHERE id = 222;
SELECT * FROM crm_profiles WHERE user_id = 222;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;
select * from group_deal_risk_types;
select * from opportunities where team_id = 1;
SELECT * FROM opportunities WHERE id = 315;
SELECT * FROM crm_field_data WHERE object_id = 315;
select * from crm_field_data where object_id = 260;
select * from generic_ai_prompts where subject_id = 315;
select * from teams; # 36, 21, 121, [EMAIL]
SELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';
# [PASSWORD_DOTS]
select * from teams where id = 1;
select * from crm_configurations where id = 39;
select * from users where team_id = 1;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 1;
# 1 - 00541000004281rAAA
# 204 - 0052g000003freeAAA
# 429 - 0052g000003qGOiAAM
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
select * from activities where type = 'softphone'
and created_at > '2024-12-11 15:24:36' order by id desc;
select * from activity_providers where team_id = 1;
select * from activity_provider_users where activity_provider_id = 328;
select * from opportunities where crm_configuration_id = 39
AND account_id = 178 AND is_closed = false
order by created_at DESC;
select * from contacts where id = 3952;
select * from accounts where id = 178;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations where id = 21;
select * from users where team_id = 36;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 36
and sa.provider = 'bullhorn';
select * from social_accounts where id = 348;
UPDATE social_accounts SET
provider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',
provider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',
expires = 1733998131,
state = 'connected'
WHERE id = 348;
# [PASSWORD_DOTS]
select * from teams where id = 31;
select * from crm_configurations where id = 18;
select * from users where team_id = 31; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 31;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 31
and sa.provider = 'close';
select * from contacts where crm_configuration_id = 18;
# [PASSWORD_DOTS] NEPTUNE [PASSWORD_DOTS]
select * from teams;
select * from users where id IN (1030, 1035, 1052);
select * from crm_configurations;
select * from users where team_id = 65; # 257
select * from team_settings where team_id = 65; # 257
select * from invitations where team_id = 65; # 257
select * from users where email = '[EMAIL]'; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 65;
select * from crm_configurations where id = 53;
select * from accounts where crm_configuration_id = 53 order by id desc;
select * from leads where crm_configuration_id = 53 order by id desc;
select * from contacts where crm_configuration_id = 53 order by id desc;
select * from opportunities where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 53 order by id desc;
select * from crm_fields where crm_configuration_id = 53 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 53 order by id desc;
select * from stages where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 13;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
and sa.provider = 'integration-app';
select * from contacts where crm_configuration_id = 13;
select * from social_accounts where sociable_id = 283;
SELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';
select * from activity_providers where team_id = 65;
SELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
;
# [PASSWORD_DOTS] STAGING [PASSWORD_DOTS]
SELECT * FROM teams;
SELECT * FROM teams WHERE id = 88;
SELECT * FROM teams WHERE id = 89;
select * from team_settings where team_id = 89;
SELECT * FROM users WHERE team_id = 89;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 89;
select * from users;
SELECT * FROM social_accounts WHERE sociable_id = 1761;
SELECT * FROM crm_configurations WHERE id = 70;
select * from accounts where crm_configuration_id = 70 order by id desc;
select * from leads where crm_configuration_id = 70 order by id desc;
select * from contacts where crm_configuration_id = 70 order by id desc;
select * from opportunities where crm_configuration_id = 70 order by id desc;
select * from crm_profiles where crm_configuration_id = 70 order by id desc;
select * from crm_fields where crm_configuration_id = 70 order by id desc;
select * from crm_field_values where crm_field_id = 3536 order by id desc;
select * from crm_layouts where crm_configuration_id = 70 order by id desc;
select * from stages where crm_configuration_id = 70 order by id desc;
select * from business_processes where crm_configuration_id = 70 order by id desc;
select * from business_process_stages where business_process_id = 34;
select * from contacts where id = 10468;
select * from crm_layouts where crm_configuration_id = 70;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;
SELECT * FROM crm_fields WHERE id IN (3533,3534,3535);
select * from activities where crm_configuration_id = 70
and (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;
SELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;
SELECT * FROM activities where crm_configuration_id = 69 ;
SELECT * FROM users WHERE email LIKE '%[EMAIL]%';
SELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;
SELECT * FROM opportunities WHERE id = 385;
select * from participants p
join activities a on p.activity_id = a.id
where a.crm_configuration_id = 70
and (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);
SELECT * FROM participants WHERE id = 1013638;
select * from teams where id = 90;
select * from users where team_id = 90;
select * from social_accounts where social_accounts.sociable_id IN (1960,1760);
SELECT * FROM crm_profiles WHERE crm_configuration_id = 71;
select * from invitations where team_id = 90;
select * from crm_configurations where id = 71;
select * from accounts where crm_configuration_id = 71 order by id desc;
select * from leads where crm_configuration_id = 71 order by id desc;
select * from contacts where crm_configuration_id = 71 order by id desc;
select * from opportunities where crm_configuration_id = 71 order by id desc;
select * from crm_profiles where crm_configuration_id = 71 order by id desc;
select * from crm_fields where crm_configuration_id = 71 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 71 order by id desc;
select * from stages where crm_configuration_id = 71 order by id desc;
select * from users order by secondary_email desc;
select u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa
join users u on sa.sociable_id = u.id
where sa.provider = 'google' and u.email LIKE 'aneliya%';
select * from failed_jobs order by id desc;
select * from users where email = '[EMAIL]' or secondary_email = '[EMAIL]';
select * from teams;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 39;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;
SELECT * FROM crm_configurations WHERE id = 70;
select * from teams where id = 1;
select * from groups where team_id = 1;
select * from users where team_id = 1;
select o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o
join users u on o.user_id = u.id
join groups g on u.group_id = g.id
join role_user ru on u.id = ru.user_id
join roles r on ru.role_id = r.id
where o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';
select * from role_user where user_id = 143;
select * from roles;
select * from role_user;
select * from groups where id = 9;
select * from scope_groups where group_id = 9;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations;
SELECT * FROM social_accounts WHERE sociable_id = 121;
https://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105
https://crmsandbox.zoho.com/crm/
https://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080
https://crm.zoho.com/crm/
org3469620
SELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;
select * from users where email LIKE "%mobile_automation_%";
select * from social_accounts where sociable_id IN (2228);
select * from crm_profiles where user_id IN (2222,2223,2226,2227);
select * from teams order by id desc;
SELECT * FROM users WHERE id = 2229;
SELECT * FROM crm_profiles WHERE user_id = 2229;
select * from opportunities where crm_configuration_id = 88;
select * from crm_fields where crm_configuration_id = 88;
select * from crm_profiles where crm_configuration_id = 88;
SELECT * FROM teams WHERE id = 1;
SELECT * FROM users WHERE id = 143;
SELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;
https://app.staging.jiminny.com/ondemand?
min_duration=1
&
only_recorded=1
&
user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e
&
sequence_number=2
select * from users where team_id = 1 and email like '%stoyan%'
select * from coaching_feedbacks;
select * from teams;
SELECT * FROM users WHERE team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from users where id = 143;
SELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
select * from users where team_id = 2;
select * from activities where crm_configuration_id = 39
and activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'
AND user_id = 143
order by id desc;
# [PASSWORD_DOTS]
select * from teams where id = 142; # 2312, 126
select * from team_settings;
select * from users where team_id = 142; # 21642
SELECT * FROM social_accounts WHERE sociable_id = 21642;
SELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;
select * from crm_profiles where id IN (93);
select * from invitations;
select * from team_features where team_id = 1;
SELECT * FROM crm_configurations WHERE id = 126;
select * from accounts where crm_configuration_id = 126 order by id desc;
select * from leads where crm_configuration_id = 126 order by id desc;
select * from contacts where crm_configuration_id = 126 order by id desc;
select * from opportunities where crm_configuration_id = 126 order by id desc;
select * from crm_profiles where crm_configuration_id = 126 order by id desc;
select * from crm_fields where crm_configuration_id = 126 # 11060
# and type IN ('picklist', 'status')
# and object_type = 'task'
order by id desc;
# 5731,5732,5733
select DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;
select * from crm_layouts where crm_configuration_id = 126 order by id desc;
SELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);
select * from stages where crm_configuration_id = 126 order by id desc;
select * from business_processes where crm_configuration_id = 126 order by id desc;
select * from business_process_stages where business_process_id IN (76,75,74,73);
select * from playbooks where team_id = 142;
select * from playbook_layouts where playbook_id IN (108);
SELECT * FROM playbook_categories WHERE playbook_id IN (108);
select * from teams where id = 130;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 2
and sa.provider = 'hubspot';
SELECT * FROM activities
WHERE crm_configuration_id = 110;
select * from teams;
select * from crm_configurations;
SELECT * FROM activities WHERE id = 628773;
SELECT * FROM crm_profiles WHERE user_id = 1460;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from teams;
select ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id
join permission_role pr on pr.role_id = ru.role_id
join permissions p on p.id = pr.permission_id
where team_id = 495 and p.name IN ('dial');
select * from teams where id = 145;
select * from crm_configurations where id = 129;
select * from social_accounts where sociable_id = 2317;
SELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;
select * from teams where id = 1;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;
SELECT * FROM crm_layout_entities WHERE id = 5507;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');
select * from teams;
select * from activities where crm_configuration_id = 14;
SELECT * FROM social_accounts where provider = 'copper';
select * from activities where id = 628467;
select * from participants where activity_id = 628467;
SELECT * FROM contacts WHERE id = 3969;
SELECT * FROM accounts WHERE id = 177;
SELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;
# [PASSWORD_DOTS] BH
select * from teams where id = 36;
SELECT * FROM crm_configurations WHERE id = 21;
select * from activities where crm_configuration_id = 21 and id = 607901;
select * from activities where crm_configuration_id = 21;
select * roles;
select * from permissions;
select * from permission_role where permission_id = 226;
select * from migrations order by id desc;
# mercury
# neptune
# earth
select * from teams;
select * from teams where id = 19;
select * from teams where id = 27;
select * from users where team_id = 27;
SELECT * FROM crm_configurations WHERE id = 42;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from activities where id = 631461;
SELECT * FROM crm_field_values WHERE crm_field_id = 180;
select * from teams where id = 2;
SELECT * FROM social_accounts WHERE sociable_id = 89;
SELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273
select * from activity_summary_logs where activity_id = 634273;
select * from sidekick_settings where team_id = 2;
select * from teams; # 2, 2
SELECT * FROM crm_configurations WHERE team_id = 2; # 2
select * from team_features where team_id = 2;
select * from features;
SELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';
SELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from users where team_id = 1 and id IN (7160, 3248);
select * from migrations order by id desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1 and sa.provider = 'salesforce';
select * from teams where id = 1;
select * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;
select * from groups where id = 565;
select * from playbooks where team_id = 1;
select * from playbooks where id = 175;
select * from playbook_categories where playbook_id = 175;
select * from users where team_id = 1;
select * from users where id = 7160;
select * from crm_profiles where user_id = 7160;
select * from features;
select
*
# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,
# crm_configuration_id, crm_provider_id, transcription_id, status
from activities where crm_configuration_id = 1 and type = 'conference'
# and crm_provider_id IS NOT NULL
and provider != 'uploader' and actual_start_time IS NOT NULL
ORDER by id desc;
select * from activities where id = 54747783; # 00UO400000pCzojMAC
select p.id, p.activity_type, pc.id, pc.name
FROM playbooks p
join playbook_categories pc on p.id = pc.playbook_id
where p.team_id = 1 and p.activity_type = 'event';
SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';
SELECT * FROM crm_field_values WHERE crm_field_id = 4;
select * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id
where crm_configuration_id = 1 and pl.playbook_id = 175;
select * from teams;
SELECT r.* FROM automated_reports r
join teams t on r.team_id = t.id
WHERE r.frequency = 'daily'
and r.status = 1
AND t.status = 'active'
AND (r.expires_at >= now() OR r.expires_at IS NULL);
select * from automated_report_results where report_id IN (18, 33);
select * from activity_searches where id = 10932;
select * from activity_search_filters where activity_search_id = 10932;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from automated_report_results where report_id IN (37);
select * from users where id IN (7160, 3248);
SELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"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","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":"AutomatedReportsServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","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":"Show Replace Field","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"whereHas","depth":4,"value":"whereHas","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3/3","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"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":"16","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"7","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"1","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\\Repositories;\n\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Pagination\\LengthAwarePaginator;\nuse Illuminate\\Support\\Facades\\DB;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSort;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSortDirection;\n\nclass AutomatedReportsRepository\n{\n /**\n * Create a new automated report\n *\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function create(array $data): AutomatedReport\n {\n return AutomatedReport::create($data);\n }\n\n /**\n * Find an automated report by UUID\n *\n * @param string $uuid\n *\n * @return AutomatedReport|null\n */\n public function findByUuid(string $uuid): ?AutomatedReport\n {\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();\n }\n\n public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport\n {\n if (is_numeric($idOrUuid)) {\n return AutomatedReport::find((int) $idOrUuid);\n }\n\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();\n }\n\n /**\n * Retrieve all standard (non-Ask Jiminny) automated reports.\n *\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAllStandardReports(\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->get();\n }\n\n /**\n * Retrieve all Ask Jiminny reports created by the given user.\n *\n * @param User $user The user whose reports to retrieve.\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAskJiminnyReportsByUser(\n User $user,\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->where('created_by', $user->getId())\n ->get();\n }\n\n private function buildSortedQuery(string $sortColumn, string $sortDirection): \\Illuminate\\Database\\Eloquent\\Builder\n {\n $allowedColumns = ['created_by', 'created_at'];\n if (! in_array($sortColumn, $allowedColumns)) {\n $sortColumn = 'created_at';\n }\n\n $sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';\n\n $query = AutomatedReport::query()->with(['creator', 'team']);\n\n if ($sortColumn === 'created_by') {\n $query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')\n ->orderByRaw(\"users.name COLLATE utf8mb4_unicode_ci {$sortDirection}\")\n ->select('automated_reports.*');\n } else {\n $query->orderBy($sortColumn, $sortDirection);\n }\n\n return $query;\n }\n\n /**\n * Get all active Ask Jiminny reports whose expiry date has passed.\n *\n * @return Collection<AutomatedReport>\n */\n public function getExpiredActiveAskJiminnyReports(): Collection\n {\n return AutomatedReport::where('status', true)\n ->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->whereNotNull('expires_at')\n ->where('expires_at', '<', now()->toDateString())\n ->get();\n }\n\n /**\n * Get all active and enabled reports with active teams for the specified frequency.\n *\n * @param string $frequency\n *\n * @return Collection<AutomatedReport>\n */\n public function getActiveReportsByFrequency(string $frequency): Collection\n {\n return AutomatedReport::where('automated_reports.status', true)\n ->where('automated_reports.frequency', $frequency)\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->where('teams.status', Team::STATUS_ACTIVE)\n ->where(function ($query) {\n $query->whereNull('automated_reports.expires_at')\n ->orWhere('automated_reports.expires_at', '>=', now()->toDateString());\n })\n ->select('automated_reports.*')\n ->get();\n }\n\n /**\n * Update an automated report\n *\n * @param AutomatedReport $report\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function update(AutomatedReport $report, array $data): AutomatedReport\n {\n $report->update($data);\n\n return $report;\n }\n\n /**\n * Create a new automated report result.\n *\n * @param array $data The data to create the automated report result with.\n *\n * @return AutomatedReportResult The newly created automated report result.\n */\n public function createResult(array $data): AutomatedReportResult\n {\n return AutomatedReportResult::create($data);\n }\n\n /**\n * Find an automated report result by UUID.\n *\n * @param string $uuid The UUID to find the automated report result with.\n *\n * @return AutomatedReportResult|null The automated report result if found, otherwise null.\n */\n public function findResultByUuid(string $uuid): ?AutomatedReportResult\n {\n return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();\n }\n\n public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('uuid', AutomatedReportResult::toOptimized($uuid))\n ->whereHas('report', static function ($query) use ($user): void {\n $query->where('team_id', $user->getTeamId())\n ->where('created_by', $user->getId());\n })\n ->first();\n }\n\n public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('parent_id', $result->getId())\n ->where('media_type', $type)\n ->first();\n }\n\n public function findLatestDefaultOrFailedResult(AutomatedReport $report): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n ->latest()\n ->first();\n }\n\n public function getGeneratedNotSentResults(): Collection\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNull('sent_at')\n ->where('status', AutomatedReportResult::STATUS_GENERATED)\n ->whereHas('report')\n ->with('report')\n ->get();\n }\n\n public function getPaginatedUserReports(\n User $user,\n ReportSort $sort,\n ReportSortDirection $sortDirection,\n int $resultsPerPage,\n int $page,\n ?Carbon $fromDate,\n ?Carbon $toDate,\n array $teamIds,\n array $reportTypes,\n ?string $name,\n ): LengthAwarePaginator {\n $query = AutomatedReportResult::query()\n ->whereNotNull('automated_report_results.generated_at')\n ->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')\n ->where(fn (Builder $q) => $this->applyUserAccessScope($q, $user))\n ->orderByRaw(\"$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}\")\n ->select('automated_report_results.*')\n ->with('report.team');\n\n if ($fromDate !== null && $toDate !== null) {\n $query->whereBetween('generated_at', [$fromDate, $toDate]);\n }\n\n if (! empty($teamIds)) {\n $query->where(function ($q) use ($teamIds) {\n foreach ($teamIds as $id) {\n $q->orWhereJsonContains('automated_reports.groups', $id);\n }\n });\n }\n\n if (! empty($reportTypes)) {\n $query->whereIn('automated_reports.type', $reportTypes);\n }\n\n if (! empty($name)) {\n $query->whereLike('name', \"%$name%\");\n }\n\n return $query->paginate($resultsPerPage, ['*'], 'page', $page);\n }\n\n public function countUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNotNull('sent_at')\n ->whereHas('report', function ($q) use ($user) {\n $q->where('team_id', $user->getTeamId())\n ->whereJsonContains('recipients->users', $user->getId());\n })\n ->count();\n }\n\n /**\n * Restrict a query on the automated_reports table to reports the given user is allowed to see.\n *\n * Matches the customer-facing audience:\n * - explicit user recipients (recipients.users)\n * - members of any of the report's groups (Ask Jiminny reports)\n */\n private function applyUserAccessScope(Builder $query, User $user): void\n {\n $userId = $user->getId();\n $groupId = $user->getGroupId();\n\n $query\n ->where('automated_reports.team_id', $user->getTeamId())\n ->where(function (Builder $q) use ($userId, $groupId): void {\n $q->whereJsonContains('automated_reports.recipients->users', $userId);\n\n if ($groupId !== null) {\n $q->orWhere(function (Builder $sub) use ($groupId): void {\n $sub->where('automated_reports.type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->whereJsonContains('automated_reports.groups', $groupId);\n });\n }\n });\n }\n\n /**\n * Get report IDs for a specific team\n *\n * @param Team $team\n *\n * @return \\Illuminate\\Support\\Collection\n */\n public function getReportIdsByTeam(Team $team): \\Illuminate\\Support\\Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->pluck('id');\n }\n\n /**\n * Get all reports for a specific team\n *\n * @param Team $team\n *\n * @return Collection\n */\n public function getReportsByTeam(Team $team): Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->get();\n }\n\n /**\n * Get all report results for a specific report\n *\n * @param AutomatedReport $report\n *\n * @return Collection\n */\n public function getResultsByReport(AutomatedReport $report): Collection\n {\n return $this->getResultsByReportQuery($report)->get();\n }\n\n public function getResultsByReportQuery(AutomatedReport $report): Builder\n {\n return AutomatedReportResult::where('report_id', $report->getId());\n }\n\n public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder\n {\n $reportIds = $this->getReportIdsByTeam($team);\n\n return AutomatedReportResult::query()->whereIn('report_id', $reportIds)\n ->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);\n }\n\n /**\n * @param int|null $teamId Optional team ID to filter results\n *\n * @return \\Illuminate\\Support\\Collection<int, int> Collection of team IDs\n */\n public function getTeamIdsWithReportsResults(?int $teamId = null): \\Illuminate\\Support\\Collection\n {\n $query = DB::table('automated_reports')\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->select('teams.id')\n ->distinct();\n\n if ($teamId !== null) {\n $query->where('teams.id', $teamId);\n }\n\n return $query->pluck('teams.id');\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Repositories;\n\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Pagination\\LengthAwarePaginator;\nuse Illuminate\\Support\\Facades\\DB;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSort;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSortDirection;\n\nclass AutomatedReportsRepository\n{\n /**\n * Create a new automated report\n *\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function create(array $data): AutomatedReport\n {\n return AutomatedReport::create($data);\n }\n\n /**\n * Find an automated report by UUID\n *\n * @param string $uuid\n *\n * @return AutomatedReport|null\n */\n public function findByUuid(string $uuid): ?AutomatedReport\n {\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();\n }\n\n public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport\n {\n if (is_numeric($idOrUuid)) {\n return AutomatedReport::find((int) $idOrUuid);\n }\n\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();\n }\n\n /**\n * Retrieve all standard (non-Ask Jiminny) automated reports.\n *\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAllStandardReports(\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->get();\n }\n\n /**\n * Retrieve all Ask Jiminny reports created by the given user.\n *\n * @param User $user The user whose reports to retrieve.\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAskJiminnyReportsByUser(\n User $user,\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->where('created_by', $user->getId())\n ->get();\n }\n\n private function buildSortedQuery(string $sortColumn, string $sortDirection): \\Illuminate\\Database\\Eloquent\\Builder\n {\n $allowedColumns = ['created_by', 'created_at'];\n if (! in_array($sortColumn, $allowedColumns)) {\n $sortColumn = 'created_at';\n }\n\n $sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';\n\n $query = AutomatedReport::query()->with(['creator', 'team']);\n\n if ($sortColumn === 'created_by') {\n $query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')\n ->orderByRaw(\"users.name COLLATE utf8mb4_unicode_ci {$sortDirection}\")\n ->select('automated_reports.*');\n } else {\n $query->orderBy($sortColumn, $sortDirection);\n }\n\n return $query;\n }\n\n /**\n * Get all active Ask Jiminny reports whose expiry date has passed.\n *\n * @return Collection<AutomatedReport>\n */\n public function getExpiredActiveAskJiminnyReports(): Collection\n {\n return AutomatedReport::where('status', true)\n ->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->whereNotNull('expires_at')\n ->where('expires_at', '<', now()->toDateString())\n ->get();\n }\n\n /**\n * Get all active and enabled reports with active teams for the specified frequency.\n *\n * @param string $frequency\n *\n * @return Collection<AutomatedReport>\n */\n public function getActiveReportsByFrequency(string $frequency): Collection\n {\n return AutomatedReport::where('automated_reports.status', true)\n ->where('automated_reports.frequency', $frequency)\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->where('teams.status', Team::STATUS_ACTIVE)\n ->where(function ($query) {\n $query->whereNull('automated_reports.expires_at')\n ->orWhere('automated_reports.expires_at', '>=', now()->toDateString());\n })\n ->select('automated_reports.*')\n ->get();\n }\n\n /**\n * Update an automated report\n *\n * @param AutomatedReport $report\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function update(AutomatedReport $report, array $data): AutomatedReport\n {\n $report->update($data);\n\n return $report;\n }\n\n /**\n * Create a new automated report result.\n *\n * @param array $data The data to create the automated report result with.\n *\n * @return AutomatedReportResult The newly created automated report result.\n */\n public function createResult(array $data): AutomatedReportResult\n {\n return AutomatedReportResult::create($data);\n }\n\n /**\n * Find an automated report result by UUID.\n *\n * @param string $uuid The UUID to find the automated report result with.\n *\n * @return AutomatedReportResult|null The automated report result if found, otherwise null.\n */\n public function findResultByUuid(string $uuid): ?AutomatedReportResult\n {\n return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();\n }\n\n public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('uuid', AutomatedReportResult::toOptimized($uuid))\n ->whereHas('report', static function ($query) use ($user): void {\n $query->where('team_id', $user->getTeamId())\n ->where('created_by', $user->getId());\n })\n ->first();\n }\n\n public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('parent_id', $result->getId())\n ->where('media_type', $type)\n ->first();\n }\n\n public function findLatestDefaultOrFailedResult(AutomatedReport $report): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n ->latest()\n ->first();\n }\n\n public function getGeneratedNotSentResults(): Collection\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNull('sent_at')\n ->where('status', AutomatedReportResult::STATUS_GENERATED)\n ->whereHas('report')\n ->with('report')\n ->get();\n }\n\n public function getPaginatedUserReports(\n User $user,\n ReportSort $sort,\n ReportSortDirection $sortDirection,\n int $resultsPerPage,\n int $page,\n ?Carbon $fromDate,\n ?Carbon $toDate,\n array $teamIds,\n array $reportTypes,\n ?string $name,\n ): LengthAwarePaginator {\n $query = AutomatedReportResult::query()\n ->whereNotNull('automated_report_results.generated_at')\n ->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')\n ->where(fn (Builder $q) => $this->applyUserAccessScope($q, $user))\n ->orderByRaw(\"$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}\")\n ->select('automated_report_results.*')\n ->with('report.team');\n\n if ($fromDate !== null && $toDate !== null) {\n $query->whereBetween('generated_at', [$fromDate, $toDate]);\n }\n\n if (! empty($teamIds)) {\n $query->where(function ($q) use ($teamIds) {\n foreach ($teamIds as $id) {\n $q->orWhereJsonContains('automated_reports.groups', $id);\n }\n });\n }\n\n if (! empty($reportTypes)) {\n $query->whereIn('automated_reports.type', $reportTypes);\n }\n\n if (! empty($name)) {\n $query->whereLike('name', \"%$name%\");\n }\n\n return $query->paginate($resultsPerPage, ['*'], 'page', $page);\n }\n\n public function countUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNotNull('sent_at')\n ->whereHas('report', function ($q) use ($user) {\n $q->where('team_id', $user->getTeamId())\n ->whereJsonContains('recipients->users', $user->getId());\n })\n ->count();\n }\n\n /**\n * Restrict a query on the automated_reports table to reports the given user is allowed to see.\n *\n * Matches the customer-facing audience:\n * - explicit user recipients (recipients.users)\n * - members of any of the report's groups (Ask Jiminny reports)\n */\n private function applyUserAccessScope(Builder $query, User $user): void\n {\n $userId = $user->getId();\n $groupId = $user->getGroupId();\n\n $query\n ->where('automated_reports.team_id', $user->getTeamId())\n ->where(function (Builder $q) use ($userId, $groupId): void {\n $q->whereJsonContains('automated_reports.recipients->users', $userId);\n\n if ($groupId !== null) {\n $q->orWhere(function (Builder $sub) use ($groupId): void {\n $sub->where('automated_reports.type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->whereJsonContains('automated_reports.groups', $groupId);\n });\n }\n });\n }\n\n /**\n * Get report IDs for a specific team\n *\n * @param Team $team\n *\n * @return \\Illuminate\\Support\\Collection\n */\n public function getReportIdsByTeam(Team $team): \\Illuminate\\Support\\Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->pluck('id');\n }\n\n /**\n * Get all reports for a specific team\n *\n * @param Team $team\n *\n * @return Collection\n */\n public function getReportsByTeam(Team $team): Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->get();\n }\n\n /**\n * Get all report results for a specific report\n *\n * @param AutomatedReport $report\n *\n * @return Collection\n */\n public function getResultsByReport(AutomatedReport $report): Collection\n {\n return $this->getResultsByReportQuery($report)->get();\n }\n\n public function getResultsByReportQuery(AutomatedReport $report): Builder\n {\n return AutomatedReportResult::where('report_id', $report->getId());\n }\n\n public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder\n {\n $reportIds = $this->getReportIdsByTeam($team);\n\n return AutomatedReportResult::query()->whereIn('report_id', $reportIds)\n ->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);\n }\n\n /**\n * @param int|null $teamId Optional team ID to filter results\n *\n * @return \\Illuminate\\Support\\Collection<int, int> Collection of team IDs\n */\n public function getTeamIdsWithReportsResults(?int $teamId = null): \\Illuminate\\Support\\Collection\n {\n $query = DB::table('automated_reports')\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->select('teams.id')\n ->distinct();\n\n if ($teamId !== null) {\n $query->where('teams.id', $teamId);\n }\n\n return $query->pluck('teams.id');\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,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open Query Execution Settings…","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"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":"1","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":"SELECT * FROM teams WHERE id = 1;\n\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;\nSELECT * FROM crm_fields WHERE id = 2234;\nSELECT * FROM crm_field_values WHERE crm_field_id = 2234;\n\nselect * from crm_profiles where user_id = 143;\n\nselect * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO\nselect * from business_processes where crm_configuration_id = 39;\n# 01941000000H669AAC, 01941000000H66JAAS\n\nselect * from record_type_field_values\n where record_type_id IN (24);\n\nselect * from crm_field_values where id IN (2730);\n\nselect * from crm_configurations where id = 39;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce'; #1035\n\n\nselect * from users where team_id = 1; # 222 group 3\nSELECT * FROM activities WHERE user_id = 222 order by id desc;\nselect * from sidekick_settings where team_id = 1;\nselect * from teams where id = 1;\nselect * from team_features where team_id = 1;\n\nselect * from activities where crm_configuration_id = 2\nand provider = 'ms-teams' and id = 608765;\n\nSELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';\n\nselect * from sidekick_settings where team_id = 2;\n\nSELECT * FROM activities WHERE id = 608660;\nselect * from activity_summary_logs where activity_id = 608660;\nselect * from ai_prompts where transcription_id = 11214;\n\n# ********************************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;\n# id: 608818, crm: 59628809737\nSELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;\n# id: 608821, crm: 59632069252\nSELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,\nplaybook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,\nscheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at\nFROM activities a\njoin calendar_events ce on a.calendar_event_id = ce.id\nWHERE a.id IN (608818, 608821);\n\nselect * from users where team_id = 1;\nselect * from team_settings where team_id = 1;\nselect * from crm_profiles where crm_configuration_id = 39 order by user_id;\n\nselect * from team_features where team_id = 1;\n\nselect * from users where team_id = 2;\n\nSELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639\n# Preslava N. Ivanova, grou id 3\n\nSELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;\n\nselect * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';\n\nselect\n a.id,\n a.type,\n a.scheduled_start_time,\n a.actual_start_time,\n a.created_at,\n a.opportunity_id,\n a.status\nFROM activities a\nWHERE opportunity_id = 344\nand status IN ('completed', 'received', 'delivered')\nand (\n (a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))\n;\n\nSELECT * FROM users WHERE id = 222;\n\nSELECT * FROM crm_profiles WHERE user_id = 222;\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;\n\nselect * from group_deal_risk_types;\n\nselect * from opportunities where team_id = 1;\n\nSELECT * FROM opportunities WHERE id = 315;\nSELECT * FROM crm_field_data WHERE object_id = 315;\nselect * from crm_field_data where object_id = 260;\n\nselect * from generic_ai_prompts where subject_id = 315;\n\nselect * from teams; # 36, 21, 121, james.graham@bullhorn.jiminny.com\nSELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';\n\n# ************************************************************************************\nselect * from teams where id = 1;\nselect * from crm_configurations where id = 39;\nselect * from users where team_id = 1;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 1;\n# 1 - 00541000004281rAAA\n# 204 - 0052g000003freeAAA\n# 429 - 0052g000003qGOiAAM\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\nselect * from activities where type = 'softphone'\nand created_at > '2024-12-11 15:24:36' order by id desc;\n\nselect * from activity_providers where team_id = 1;\nselect * from activity_provider_users where activity_provider_id = 328;\n\nselect * from opportunities where crm_configuration_id = 39\nAND account_id = 178 AND is_closed = false\norder by created_at DESC;\n\nselect * from contacts where id = 3952;\nselect * from accounts where id = 178;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations where id = 21;\nselect * from users where team_id = 36;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 36;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 36\nand sa.provider = 'bullhorn';\n\nselect * from social_accounts where id = 348;\nUPDATE social_accounts SET\nprovider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',\nprovider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',\nexpires = 1733998131,\nstate = 'connected'\nWHERE id = 348;\n\n# ************************************************************************************\nselect * from teams where id = 31;\nselect * from crm_configurations where id = 18;\n\nselect * from users where team_id = 31; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 31;\n\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 31\nand sa.provider = 'close';\n\nselect * from contacts where crm_configuration_id = 18;\n\n# ********************** NEPTUNE **************************************************************\nselect * from teams;\nselect * from users where id IN (1030, 1035, 1052);\nselect * from crm_configurations;\n\nselect * from users where team_id = 65; # 257\nselect * from team_settings where team_id = 65; # 257\nselect * from invitations where team_id = 65; # 257\nselect * from users where email = 'integration-account@jiminny.com'; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 65;\n\nselect * from crm_configurations where id = 53;\nselect * from accounts where crm_configuration_id = 53 order by id desc;\nselect * from leads where crm_configuration_id = 53 order by id desc;\nselect * from contacts where crm_configuration_id = 53 order by id desc;\nselect * from opportunities where crm_configuration_id = 53 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 53 order by id desc;\nselect * from crm_fields where crm_configuration_id = 53 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 53 order by id desc;\nselect * from stages where crm_configuration_id = 53 order by id desc;\n\n\nselect * from crm_profiles where crm_configuration_id = 13;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\nand sa.provider = 'integration-app';\n\nselect * from contacts where crm_configuration_id = 13;\n\nselect * from social_accounts where sociable_id = 283;\n\nSELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';\n\nselect * from activity_providers where team_id = 65;\nSELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\n;\n\n# ***************************** STAGING ********************************************\nSELECT * FROM teams;\nSELECT * FROM teams WHERE id = 88;\nSELECT * FROM teams WHERE id = 89;\nselect * from team_settings where team_id = 89;\nSELECT * FROM users WHERE team_id = 89;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 89;\n\nselect * from users;\nSELECT * FROM social_accounts WHERE sociable_id = 1761;\nSELECT * FROM crm_configurations WHERE id = 70;\nselect * from accounts where crm_configuration_id = 70 order by id desc;\nselect * from leads where crm_configuration_id = 70 order by id desc;\nselect * from contacts where crm_configuration_id = 70 order by id desc;\nselect * from opportunities where crm_configuration_id = 70 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 70 order by id desc;\nselect * from crm_fields where crm_configuration_id = 70 order by id desc;\nselect * from crm_field_values where crm_field_id = 3536 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 70 order by id desc;\nselect * from stages where crm_configuration_id = 70 order by id desc;\nselect * from business_processes where crm_configuration_id = 70 order by id desc;\nselect * from business_process_stages where business_process_id = 34;\n\nselect * from contacts where id = 10468;\n\nselect * from crm_layouts where crm_configuration_id = 70;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;\nSELECT * FROM crm_fields WHERE id IN (3533,3534,3535);\n\nselect * from activities where crm_configuration_id = 70\nand (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;\n\nSELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;\nSELECT * FROM activities where crm_configuration_id = 69 ;\n\nSELECT * FROM users WHERE email LIKE '%jiminny_web_sa2@jiminny.com%';\nSELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;\nSELECT * FROM opportunities WHERE id = 385;\n\nselect * from participants p\njoin activities a on p.activity_id = a.id\nwhere a.crm_configuration_id = 70\nand (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);\nSELECT * FROM participants WHERE id = 1013638;\n\nselect * from teams where id = 90;\nselect * from users where team_id = 90;\nselect * from social_accounts where social_accounts.sociable_id IN (1960,1760);\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 71;\nselect * from invitations where team_id = 90;\n\nselect * from crm_configurations where id = 71;\nselect * from accounts where crm_configuration_id = 71 order by id desc;\nselect * from leads where crm_configuration_id = 71 order by id desc;\nselect * from contacts where crm_configuration_id = 71 order by id desc;\nselect * from opportunities where crm_configuration_id = 71 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 71 order by id desc;\nselect * from crm_fields where crm_configuration_id = 71 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 71 order by id desc;\nselect * from stages where crm_configuration_id = 71 order by id desc;\n\nselect * from users order by secondary_email desc;\nselect u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa\n join users u on sa.sociable_id = u.id\nwhere sa.provider = 'google' and u.email LIKE 'aneliya%';\n\nselect * from failed_jobs order by id desc;\n\nselect * from users where email = 'ben.allwright@learningpeople.co.uk' or secondary_email = 'ben.allwright@learningpeople.co.uk';\n\nselect * from teams;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 39;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;\nSELECT * FROM crm_configurations WHERE id = 70;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1;\nselect * from users where team_id = 1;\n\nselect o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o\njoin users u on o.user_id = u.id\njoin groups g on u.group_id = g.id\njoin role_user ru on u.id = ru.user_id\njoin roles r on ru.role_id = r.id\nwhere o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';\n\nselect * from role_user where user_id = 143;\nselect * from roles;\n\nselect * from role_user;\nselect * from groups where id = 9;\nselect * from scope_groups where group_id = 9;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations;\nSELECT * FROM social_accounts WHERE sociable_id = 121;\n\nhttps://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105\nhttps://crmsandbox.zoho.com/crm/\n\nhttps://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080\n https://crm.zoho.com/crm/\n org3469620\n\nSELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;\n\nselect * from users where email LIKE \"%mobile_automation_%\";\nselect * from social_accounts where sociable_id IN (2228);\nselect * from crm_profiles where user_id IN (2222,2223,2226,2227);\n\nselect * from teams order by id desc;\nSELECT * FROM users WHERE id = 2229;\nSELECT * FROM crm_profiles WHERE user_id = 2229;\nselect * from opportunities where crm_configuration_id = 88;\nselect * from crm_fields where crm_configuration_id = 88;\nselect * from crm_profiles where crm_configuration_id = 88;\n\nSELECT * FROM teams WHERE id = 1;\n\nSELECT * FROM users WHERE id = 143;\nSELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;\n\nhttps://app.staging.jiminny.com/ondemand?\n min_duration=1\n &\n only_recorded=1\n &\n user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e\n &\n sequence_number=2\n\n select * from users where team_id = 1 and email like '%stoyan%'\n\nselect * from coaching_feedbacks;\n\nselect * from teams;\nSELECT * FROM users WHERE team_id = 36;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from users where id = 143;\n\nSELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\n\nselect * from users where team_id = 2;\nselect * from activities where crm_configuration_id = 39\nand activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'\nAND user_id = 143\norder by id desc;\n\n# ************************************************************************************\nselect * from teams where id = 142; # 2312, 126\nselect * from team_settings;\nselect * from users where team_id = 142; # 21642\nSELECT * FROM social_accounts WHERE sociable_id = 21642;\nSELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;\nselect * from crm_profiles where id IN (93);\nselect * from invitations;\nselect * from team_features where team_id = 1;\n\nSELECT * FROM crm_configurations WHERE id = 126;\nselect * from accounts where crm_configuration_id = 126 order by id desc;\nselect * from leads where crm_configuration_id = 126 order by id desc;\nselect * from contacts where crm_configuration_id = 126 order by id desc;\nselect * from opportunities where crm_configuration_id = 126 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 126 order by id desc;\nselect * from crm_fields where crm_configuration_id = 126 # 11060\n# and type IN ('picklist', 'status')\n# and object_type = 'task'\norder by id desc;\n# 5731,5732,5733\nselect DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;\nselect * from crm_layouts where crm_configuration_id = 126 order by id desc;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);\nselect * from stages where crm_configuration_id = 126 order by id desc;\nselect * from business_processes where crm_configuration_id = 126 order by id desc;\nselect * from business_process_stages where business_process_id IN (76,75,74,73);\nselect * from playbooks where team_id = 142;\nselect * from playbook_layouts where playbook_id IN (108);\nSELECT * FROM playbook_categories WHERE playbook_id IN (108);\n\nselect * from teams where id = 130;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 2\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities\n WHERE crm_configuration_id = 110;\n\nselect * from teams;\nselect * from crm_configurations;\n\nSELECT * FROM activities WHERE id = 628773;\nSELECT * FROM crm_profiles WHERE user_id = 1460;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from teams;\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from teams where id = 145;\nselect * from crm_configurations where id = 129;\nselect * from social_accounts where sociable_id = 2317;\nSELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;\n\nselect * from teams where id = 1;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;\nSELECT * FROM crm_layout_entities WHERE id = 5507;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');\n\nselect * from teams;\nselect * from activities where crm_configuration_id = 14;\n\nSELECT * FROM social_accounts where provider = 'copper';\n\nselect * from activities where id = 628467;\nselect * from participants where activity_id = 628467;\n\nSELECT * FROM contacts WHERE id = 3969;\nSELECT * FROM accounts WHERE id = 177;\n\nSELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;\n\n# ********************* BH\nselect * from teams where id = 36;\nSELECT * FROM crm_configurations WHERE id = 21;\nselect * from activities where crm_configuration_id = 21 and id = 607901;\nselect * from activities where crm_configuration_id = 21;\n\nselect * roles;\nselect * from permissions;\nselect * from permission_role where permission_id = 226;\n\nselect * from migrations order by id desc;\n\n# mercury\n# neptune\n# earth\n\nselect * from teams;\nselect * from teams where id = 19;\nselect * from teams where id = 27;\nselect * from users where team_id = 27;\nSELECT * FROM crm_configurations WHERE id = 42;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from activities where id = 631461;\nSELECT * FROM crm_field_values WHERE crm_field_id = 180;\n\nselect * from teams where id = 2;\nSELECT * FROM social_accounts WHERE sociable_id = 89;\n\nSELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273\nselect * from activity_summary_logs where activity_id = 634273;\n\nselect * from sidekick_settings where team_id = 2;\n\nselect * from teams; # 2, 2\nSELECT * FROM crm_configurations WHERE team_id = 2; # 2\nselect * from team_features where team_id = 2;\nselect * from features;\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;\n\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from users where team_id = 1 and id IN (7160, 3248);\nselect * from migrations order by id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1 and sa.provider = 'salesforce';\n\nselect * from teams where id = 1;\nselect * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;\nselect * from groups where id = 565;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 175;\nselect * from playbook_categories where playbook_id = 175;\nselect * from users where team_id = 1;\nselect * from users where id = 7160;\nselect * from crm_profiles where user_id = 7160;\nselect * from features;\nselect\n *\n# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,\n# crm_configuration_id, crm_provider_id, transcription_id, status\nfrom activities where crm_configuration_id = 1 and type = 'conference'\n# and crm_provider_id IS NOT NULL\nand provider != 'uploader' and actual_start_time IS NOT NULL\nORDER by id desc;\nselect * from activities where id = 54747783; # 00UO400000pCzojMAC\n\nselect p.id, p.activity_type, pc.id, pc.name\nFROM playbooks p\njoin playbook_categories pc on p.id = pc.playbook_id\nwhere p.team_id = 1 and p.activity_type = 'event';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';\nSELECT * FROM crm_field_values WHERE crm_field_id = 4;\n\nselect * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id\nwhere crm_configuration_id = 1 and pl.playbook_id = 175;\n\nselect * from teams;\nSELECT r.* FROM automated_reports r\njoin teams t on r.team_id = t.id\nWHERE r.frequency = 'daily'\n and r.status = 1\nAND t.status = 'active'\nAND (r.expires_at >= now() OR r.expires_at IS NULL);\n\nselect * from automated_report_results where report_id IN (18, 33);\n\nselect * from activity_searches where id = 10932;\nselect * from activity_search_filters where activity_search_id = 10932;\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from automated_report_results where report_id IN (37);\nselect * from users where id IN (7160, 3248);\n\nSELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;","depth":4,"value":"SELECT * FROM teams WHERE id = 1;\n\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;\nSELECT * FROM crm_fields WHERE id = 2234;\nSELECT * FROM crm_field_values WHERE crm_field_id = 2234;\n\nselect * from crm_profiles where user_id = 143;\n\nselect * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO\nselect * from business_processes where crm_configuration_id = 39;\n# 01941000000H669AAC, 01941000000H66JAAS\n\nselect * from record_type_field_values\n where record_type_id IN (24);\n\nselect * from crm_field_values where id IN (2730);\n\nselect * from crm_configurations where id = 39;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce'; #1035\n\n\nselect * from users where team_id = 1; # 222 group 3\nSELECT * FROM activities WHERE user_id = 222 order by id desc;\nselect * from sidekick_settings where team_id = 1;\nselect * from teams where id = 1;\nselect * from team_features where team_id = 1;\n\nselect * from activities where crm_configuration_id = 2\nand provider = 'ms-teams' and id = 608765;\n\nSELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';\n\nselect * from sidekick_settings where team_id = 2;\n\nSELECT * FROM activities WHERE id = 608660;\nselect * from activity_summary_logs where activity_id = 608660;\nselect * from ai_prompts where transcription_id = 11214;\n\n# ********************************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;\n# id: 608818, crm: 59628809737\nSELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;\n# id: 608821, crm: 59632069252\nSELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,\nplaybook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,\nscheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at\nFROM activities a\njoin calendar_events ce on a.calendar_event_id = ce.id\nWHERE a.id IN (608818, 608821);\n\nselect * from users where team_id = 1;\nselect * from team_settings where team_id = 1;\nselect * from crm_profiles where crm_configuration_id = 39 order by user_id;\n\nselect * from team_features where team_id = 1;\n\nselect * from users where team_id = 2;\n\nSELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639\n# Preslava N. Ivanova, grou id 3\n\nSELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;\n\nselect * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';\n\nselect\n a.id,\n a.type,\n a.scheduled_start_time,\n a.actual_start_time,\n a.created_at,\n a.opportunity_id,\n a.status\nFROM activities a\nWHERE opportunity_id = 344\nand status IN ('completed', 'received', 'delivered')\nand (\n (a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))\n;\n\nSELECT * FROM users WHERE id = 222;\n\nSELECT * FROM crm_profiles WHERE user_id = 222;\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;\n\nselect * from group_deal_risk_types;\n\nselect * from opportunities where team_id = 1;\n\nSELECT * FROM opportunities WHERE id = 315;\nSELECT * FROM crm_field_data WHERE object_id = 315;\nselect * from crm_field_data where object_id = 260;\n\nselect * from generic_ai_prompts where subject_id = 315;\n\nselect * from teams; # 36, 21, 121, james.graham@bullhorn.jiminny.com\nSELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';\n\n# ************************************************************************************\nselect * from teams where id = 1;\nselect * from crm_configurations where id = 39;\nselect * from users where team_id = 1;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 1;\n# 1 - 00541000004281rAAA\n# 204 - 0052g000003freeAAA\n# 429 - 0052g000003qGOiAAM\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\nselect * from activities where type = 'softphone'\nand created_at > '2024-12-11 15:24:36' order by id desc;\n\nselect * from activity_providers where team_id = 1;\nselect * from activity_provider_users where activity_provider_id = 328;\n\nselect * from opportunities where crm_configuration_id = 39\nAND account_id = 178 AND is_closed = false\norder by created_at DESC;\n\nselect * from contacts where id = 3952;\nselect * from accounts where id = 178;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations where id = 21;\nselect * from users where team_id = 36;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 36;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 36\nand sa.provider = 'bullhorn';\n\nselect * from social_accounts where id = 348;\nUPDATE social_accounts SET\nprovider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',\nprovider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',\nexpires = 1733998131,\nstate = 'connected'\nWHERE id = 348;\n\n# ************************************************************************************\nselect * from teams where id = 31;\nselect * from crm_configurations where id = 18;\n\nselect * from users where team_id = 31; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 31;\n\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 31\nand sa.provider = 'close';\n\nselect * from contacts where crm_configuration_id = 18;\n\n# ********************** NEPTUNE **************************************************************\nselect * from teams;\nselect * from users where id IN (1030, 1035, 1052);\nselect * from crm_configurations;\n\nselect * from users where team_id = 65; # 257\nselect * from team_settings where team_id = 65; # 257\nselect * from invitations where team_id = 65; # 257\nselect * from users where email = 'integration-account@jiminny.com'; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 65;\n\nselect * from crm_configurations where id = 53;\nselect * from accounts where crm_configuration_id = 53 order by id desc;\nselect * from leads where crm_configuration_id = 53 order by id desc;\nselect * from contacts where crm_configuration_id = 53 order by id desc;\nselect * from opportunities where crm_configuration_id = 53 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 53 order by id desc;\nselect * from crm_fields where crm_configuration_id = 53 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 53 order by id desc;\nselect * from stages where crm_configuration_id = 53 order by id desc;\n\n\nselect * from crm_profiles where crm_configuration_id = 13;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\nand sa.provider = 'integration-app';\n\nselect * from contacts where crm_configuration_id = 13;\n\nselect * from social_accounts where sociable_id = 283;\n\nSELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';\n\nselect * from activity_providers where team_id = 65;\nSELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\n;\n\n# ***************************** STAGING ********************************************\nSELECT * FROM teams;\nSELECT * FROM teams WHERE id = 88;\nSELECT * FROM teams WHERE id = 89;\nselect * from team_settings where team_id = 89;\nSELECT * FROM users WHERE team_id = 89;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 89;\n\nselect * from users;\nSELECT * FROM social_accounts WHERE sociable_id = 1761;\nSELECT * FROM crm_configurations WHERE id = 70;\nselect * from accounts where crm_configuration_id = 70 order by id desc;\nselect * from leads where crm_configuration_id = 70 order by id desc;\nselect * from contacts where crm_configuration_id = 70 order by id desc;\nselect * from opportunities where crm_configuration_id = 70 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 70 order by id desc;\nselect * from crm_fields where crm_configuration_id = 70 order by id desc;\nselect * from crm_field_values where crm_field_id = 3536 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 70 order by id desc;\nselect * from stages where crm_configuration_id = 70 order by id desc;\nselect * from business_processes where crm_configuration_id = 70 order by id desc;\nselect * from business_process_stages where business_process_id = 34;\n\nselect * from contacts where id = 10468;\n\nselect * from crm_layouts where crm_configuration_id = 70;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;\nSELECT * FROM crm_fields WHERE id IN (3533,3534,3535);\n\nselect * from activities where crm_configuration_id = 70\nand (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;\n\nSELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;\nSELECT * FROM activities where crm_configuration_id = 69 ;\n\nSELECT * FROM users WHERE email LIKE '%jiminny_web_sa2@jiminny.com%';\nSELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;\nSELECT * FROM opportunities WHERE id = 385;\n\nselect * from participants p\njoin activities a on p.activity_id = a.id\nwhere a.crm_configuration_id = 70\nand (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);\nSELECT * FROM participants WHERE id = 1013638;\n\nselect * from teams where id = 90;\nselect * from users where team_id = 90;\nselect * from social_accounts where social_accounts.sociable_id IN (1960,1760);\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 71;\nselect * from invitations where team_id = 90;\n\nselect * from crm_configurations where id = 71;\nselect * from accounts where crm_configuration_id = 71 order by id desc;\nselect * from leads where crm_configuration_id = 71 order by id desc;\nselect * from contacts where crm_configuration_id = 71 order by id desc;\nselect * from opportunities where crm_configuration_id = 71 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 71 order by id desc;\nselect * from crm_fields where crm_configuration_id = 71 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 71 order by id desc;\nselect * from stages where crm_configuration_id = 71 order by id desc;\n\nselect * from users order by secondary_email desc;\nselect u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa\n join users u on sa.sociable_id = u.id\nwhere sa.provider = 'google' and u.email LIKE 'aneliya%';\n\nselect * from failed_jobs order by id desc;\n\nselect * from users where email = 'ben.allwright@learningpeople.co.uk' or secondary_email = 'ben.allwright@learningpeople.co.uk';\n\nselect * from teams;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 39;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;\nSELECT * FROM crm_configurations WHERE id = 70;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1;\nselect * from users where team_id = 1;\n\nselect o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o\njoin users u on o.user_id = u.id\njoin groups g on u.group_id = g.id\njoin role_user ru on u.id = ru.user_id\njoin roles r on ru.role_id = r.id\nwhere o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';\n\nselect * from role_user where user_id = 143;\nselect * from roles;\n\nselect * from role_user;\nselect * from groups where id = 9;\nselect * from scope_groups where group_id = 9;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations;\nSELECT * FROM social_accounts WHERE sociable_id = 121;\n\nhttps://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105\nhttps://crmsandbox.zoho.com/crm/\n\nhttps://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080\n https://crm.zoho.com/crm/\n org3469620\n\nSELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;\n\nselect * from users where email LIKE \"%mobile_automation_%\";\nselect * from social_accounts where sociable_id IN (2228);\nselect * from crm_profiles where user_id IN (2222,2223,2226,2227);\n\nselect * from teams order by id desc;\nSELECT * FROM users WHERE id = 2229;\nSELECT * FROM crm_profiles WHERE user_id = 2229;\nselect * from opportunities where crm_configuration_id = 88;\nselect * from crm_fields where crm_configuration_id = 88;\nselect * from crm_profiles where crm_configuration_id = 88;\n\nSELECT * FROM teams WHERE id = 1;\n\nSELECT * FROM users WHERE id = 143;\nSELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;\n\nhttps://app.staging.jiminny.com/ondemand?\n min_duration=1\n &\n only_recorded=1\n &\n user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e\n &\n sequence_number=2\n\n select * from users where team_id = 1 and email like '%stoyan%'\n\nselect * from coaching_feedbacks;\n\nselect * from teams;\nSELECT * FROM users WHERE team_id = 36;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from users where id = 143;\n\nSELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\n\nselect * from users where team_id = 2;\nselect * from activities where crm_configuration_id = 39\nand activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'\nAND user_id = 143\norder by id desc;\n\n# ************************************************************************************\nselect * from teams where id = 142; # 2312, 126\nselect * from team_settings;\nselect * from users where team_id = 142; # 21642\nSELECT * FROM social_accounts WHERE sociable_id = 21642;\nSELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;\nselect * from crm_profiles where id IN (93);\nselect * from invitations;\nselect * from team_features where team_id = 1;\n\nSELECT * FROM crm_configurations WHERE id = 126;\nselect * from accounts where crm_configuration_id = 126 order by id desc;\nselect * from leads where crm_configuration_id = 126 order by id desc;\nselect * from contacts where crm_configuration_id = 126 order by id desc;\nselect * from opportunities where crm_configuration_id = 126 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 126 order by id desc;\nselect * from crm_fields where crm_configuration_id = 126 # 11060\n# and type IN ('picklist', 'status')\n# and object_type = 'task'\norder by id desc;\n# 5731,5732,5733\nselect DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;\nselect * from crm_layouts where crm_configuration_id = 126 order by id desc;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);\nselect * from stages where crm_configuration_id = 126 order by id desc;\nselect * from business_processes where crm_configuration_id = 126 order by id desc;\nselect * from business_process_stages where business_process_id IN (76,75,74,73);\nselect * from playbooks where team_id = 142;\nselect * from playbook_layouts where playbook_id IN (108);\nSELECT * FROM playbook_categories WHERE playbook_id IN (108);\n\nselect * from teams where id = 130;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 2\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities\n WHERE crm_configuration_id = 110;\n\nselect * from teams;\nselect * from crm_configurations;\n\nSELECT * FROM activities WHERE id = 628773;\nSELECT * FROM crm_profiles WHERE user_id = 1460;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from teams;\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from teams where id = 145;\nselect * from crm_configurations where id = 129;\nselect * from social_accounts where sociable_id = 2317;\nSELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;\n\nselect * from teams where id = 1;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;\nSELECT * FROM crm_layout_entities WHERE id = 5507;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');\n\nselect * from teams;\nselect * from activities where crm_configuration_id = 14;\n\nSELECT * FROM social_accounts where provider = 'copper';\n\nselect * from activities where id = 628467;\nselect * from participants where activity_id = 628467;\n\nSELECT * FROM contacts WHERE id = 3969;\nSELECT * FROM accounts WHERE id = 177;\n\nSELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;\n\n# ********************* BH\nselect * from teams where id = 36;\nSELECT * FROM crm_configurations WHERE id = 21;\nselect * from activities where crm_configuration_id = 21 and id = 607901;\nselect * from activities where crm_configuration_id = 21;\n\nselect * roles;\nselect * from permissions;\nselect * from permission_role where permission_id = 226;\n\nselect * from migrations order by id desc;\n\n# mercury\n# neptune\n# earth\n\nselect * from teams;\nselect * from teams where id = 19;\nselect * from teams where id = 27;\nselect * from users where team_id = 27;\nSELECT * FROM crm_configurations WHERE id = 42;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from activities where id = 631461;\nSELECT * FROM crm_field_values WHERE crm_field_id = 180;\n\nselect * from teams where id = 2;\nSELECT * FROM social_accounts WHERE sociable_id = 89;\n\nSELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273\nselect * from activity_summary_logs where activity_id = 634273;\n\nselect * from sidekick_settings where team_id = 2;\n\nselect * from teams; # 2, 2\nSELECT * FROM crm_configurations WHERE team_id = 2; # 2\nselect * from team_features where team_id = 2;\nselect * from features;\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;\n\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from users where team_id = 1 and id IN (7160, 3248);\nselect * from migrations order by id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1 and sa.provider = 'salesforce';\n\nselect * from teams where id = 1;\nselect * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;\nselect * from groups where id = 565;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 175;\nselect * from playbook_categories where playbook_id = 175;\nselect * from users where team_id = 1;\nselect * from users where id = 7160;\nselect * from crm_profiles where user_id = 7160;\nselect * from features;\nselect\n *\n# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,\n# crm_configuration_id, crm_provider_id, transcription_id, status\nfrom activities where crm_configuration_id = 1 and type = 'conference'\n# and crm_provider_id IS NOT NULL\nand provider != 'uploader' and actual_start_time IS NOT NULL\nORDER by id desc;\nselect * from activities where id = 54747783; # 00UO400000pCzojMAC\n\nselect p.id, p.activity_type, pc.id, pc.name\nFROM playbooks p\njoin playbook_categories pc on p.id = pc.playbook_id\nwhere p.team_id = 1 and p.activity_type = 'event';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';\nSELECT * FROM crm_field_values WHERE crm_field_id = 4;\n\nselect * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id\nwhere crm_configuration_id = 1 and pl.playbook_id = 175;\n\nselect * from teams;\nSELECT r.* FROM automated_reports r\njoin teams t on r.team_id = t.id\nWHERE r.frequency = 'daily'\n and r.status = 1\nAND t.status = 'active'\nAND (r.expires_at >= now() OR r.expires_at IS NULL);\n\nselect * from automated_report_results where report_id IN (18, 33);\n\nselect * from activity_searches where id = 10932;\nselect * from activity_search_filters where activity_search_id = 10932;\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from automated_report_results where report_id IN (37);\nselect * from users where id IN (7160, 3248);\n\nSELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","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":"AXButton","text":"Expand Selected","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":"AXButton","text":"Collapse All","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":"AXButton","text":"Options","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":"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}]...
|
8933891107336406584
|
6686649039984145485
|
click
|
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
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
whereHas
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
3/3
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
16
7
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Repositories;
use Carbon\CarbonImmutable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
class AutomatedReportsRepository
{
/**
* Create a new automated report
*
* @param array $data
*
* @return AutomatedReport
*/
public function create(array $data): AutomatedReport
{
return AutomatedReport::create($data);
}
/**
* Find an automated report by UUID
*
* @param string $uuid
*
* @return AutomatedReport|null
*/
public function findByUuid(string $uuid): ?AutomatedReport
{
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();
}
public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport
{
if (is_numeric($idOrUuid)) {
return AutomatedReport::find((int) $idOrUuid);
}
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();
}
/**
* Retrieve all standard (non-Ask Jiminny) automated reports.
*
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAllStandardReports(
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->get();
}
/**
* Retrieve all Ask Jiminny reports created by the given user.
*
* @param User $user The user whose reports to retrieve.
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAskJiminnyReportsByUser(
User $user,
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->where('created_by', $user->getId())
->get();
}
private function buildSortedQuery(string $sortColumn, string $sortDirection): \Illuminate\Database\Eloquent\Builder
{
$allowedColumns = ['created_by', 'created_at'];
if (! in_array($sortColumn, $allowedColumns)) {
$sortColumn = 'created_at';
}
$sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';
$query = AutomatedReport::query()->with(['creator', 'team']);
if ($sortColumn === 'created_by') {
$query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')
->orderByRaw("users.name COLLATE utf8mb4_unicode_ci {$sortDirection}")
->select('automated_reports.*');
} else {
$query->orderBy($sortColumn, $sortDirection);
}
return $query;
}
/**
* Get all active Ask Jiminny reports whose expiry date has passed.
*
* @return Collection<AutomatedReport>
*/
public function getExpiredActiveAskJiminnyReports(): Collection
{
return AutomatedReport::where('status', true)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->whereNotNull('expires_at')
->where('expires_at', '<', now()->toDateString())
->get();
}
/**
* Get all active and enabled reports with active teams for the specified frequency.
*
* @param string $frequency
*
* @return Collection<AutomatedReport>
*/
public function getActiveReportsByFrequency(string $frequency): Collection
{
return AutomatedReport::where('automated_reports.status', true)
->where('automated_reports.frequency', $frequency)
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->where('teams.status', Team::STATUS_ACTIVE)
->where(function ($query) {
$query->whereNull('automated_reports.expires_at')
->orWhere('automated_reports.expires_at', '>=', now()->toDateString());
})
->select('automated_reports.*')
->get();
}
/**
* Update an automated report
*
* @param AutomatedReport $report
* @param array $data
*
* @return AutomatedReport
*/
public function update(AutomatedReport $report, array $data): AutomatedReport
{
$report->update($data);
return $report;
}
/**
* Create a new automated report result.
*
* @param array $data The data to create the automated report result with.
*
* @return AutomatedReportResult The newly created automated report result.
*/
public function createResult(array $data): AutomatedReportResult
{
return AutomatedReportResult::create($data);
}
/**
* Find an automated report result by UUID.
*
* @param string $uuid The UUID to find the automated report result with.
*
* @return AutomatedReportResult|null The automated report result if found, otherwise null.
*/
public function findResultByUuid(string $uuid): ?AutomatedReportResult
{
return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();
}
public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('uuid', AutomatedReportResult::toOptimized($uuid))
->whereHas('report', static function ($query) use ($user): void {
$query->where('team_id', $user->getTeamId())
->where('created_by', $user->getId());
})
->first();
}
public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('parent_id', $result->getId())
->where('media_type', $type)
->first();
}
public function findLatestDefaultOrFailedResult(AutomatedReport $report): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
->latest()
->first();
}
public function getGeneratedNotSentResults(): Collection
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNull('sent_at')
->where('status', AutomatedReportResult::STATUS_GENERATED)
->whereHas('report')
->with('report')
->get();
}
public function getPaginatedUserReports(
User $user,
ReportSort $sort,
ReportSortDirection $sortDirection,
int $resultsPerPage,
int $page,
?Carbon $fromDate,
?Carbon $toDate,
array $teamIds,
array $reportTypes,
?string $name,
): LengthAwarePaginator {
$query = AutomatedReportResult::query()
->whereNotNull('automated_report_results.generated_at')
->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')
->where(fn (Builder $q) => $this->applyUserAccessScope($q, $user))
->orderByRaw("$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}")
->select('automated_report_results.*')
->with('report.team');
if ($fromDate !== null && $toDate !== null) {
$query->whereBetween('generated_at', [$fromDate, $toDate]);
}
if (! empty($teamIds)) {
$query->where(function ($q) use ($teamIds) {
foreach ($teamIds as $id) {
$q->orWhereJsonContains('automated_reports.groups', $id);
}
});
}
if (! empty($reportTypes)) {
$query->whereIn('automated_reports.type', $reportTypes);
}
if (! empty($name)) {
$query->whereLike('name', "%$name%");
}
return $query->paginate($resultsPerPage, ['*'], 'page', $page);
}
public function countUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNotNull('sent_at')
->whereHas('report', function ($q) use ($user) {
$q->where('team_id', $user->getTeamId())
->whereJsonContains('recipients->users', $user->getId());
})
->count();
}
/**
* Restrict a query on the automated_reports table to reports the given user is allowed to see.
*
* Matches the customer-facing audience:
* - explicit user recipients (recipients.users)
* - members of any of the report's groups (Ask Jiminny reports)
*/
private function applyUserAccessScope(Builder $query, User $user): void
{
$userId = $user->getId();
$groupId = $user->getGroupId();
$query
->where('automated_reports.team_id', $user->getTeamId())
->where(function (Builder $q) use ($userId, $groupId): void {
$q->whereJsonContains('automated_reports.recipients->users', $userId);
if ($groupId !== null) {
$q->orWhere(function (Builder $sub) use ($groupId): void {
$sub->where('automated_reports.type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->whereJsonContains('automated_reports.groups', $groupId);
});
}
});
}
/**
* Get report IDs for a specific team
*
* @param Team $team
*
* @return \Illuminate\Support\Collection
*/
public function getReportIdsByTeam(Team $team): \Illuminate\Support\Collection
{
return AutomatedReport::where('team_id', $team->getId())->pluck('id');
}
/**
* Get all reports for a specific team
*
* @param Team $team
*
* @return Collection
*/
public function getReportsByTeam(Team $team): Collection
{
return AutomatedReport::where('team_id', $team->getId())->get();
}
/**
* Get all report results for a specific report
*
* @param AutomatedReport $report
*
* @return Collection
*/
public function getResultsByReport(AutomatedReport $report): Collection
{
return $this->getResultsByReportQuery($report)->get();
}
public function getResultsByReportQuery(AutomatedReport $report): Builder
{
return AutomatedReportResult::where('report_id', $report->getId());
}
public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder
{
$reportIds = $this->getReportIdsByTeam($team);
return AutomatedReportResult::query()->whereIn('report_id', $reportIds)
->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);
}
/**
* @param int|null $teamId Optional team ID to filter results
*
* @return \Illuminate\Support\Collection<int, int> Collection of team IDs
*/
public function getTeamIdsWithReportsResults(?int $teamId = null): \Illuminate\Support\Collection
{
$query = DB::table('automated_reports')
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->select('teams.id')
->distinct();
if ($teamId !== null) {
$query->where('teams.id', $teamId);
}
return $query->pluck('teams.id');
}
}
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
1
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM teams WHERE id = 1;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;
SELECT * FROM crm_fields WHERE id = 2234;
SELECT * FROM crm_field_values WHERE crm_field_id = 2234;
select * from crm_profiles where user_id = 143;
select * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO
select * from business_processes where crm_configuration_id = 39;
# 01941000000H669AAC, 01941000000H66JAAS
select * from record_type_field_values
where record_type_id IN (24);
select * from crm_field_values where id IN (2730);
select * from crm_configurations where id = 39;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce'; #1035
select * from users where team_id = 1; # 222 group 3
SELECT * FROM activities WHERE user_id = 222 order by id desc;
select * from sidekick_settings where team_id = 1;
select * from teams where id = 1;
select * from team_features where team_id = 1;
select * from activities where crm_configuration_id = 2
and provider = 'ms-teams' and id = 608765;
SELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';
select * from sidekick_settings where team_id = 2;
SELECT * FROM activities WHERE id = 608660;
select * from activity_summary_logs where activity_id = 608660;
select * from ai_prompts where transcription_id = 11214;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;
# id: 608818, crm: 59628809737
SELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;
# id: 608821, crm: 59632069252
SELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,
playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,
scheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at
FROM activities a
join calendar_events ce on a.calendar_event_id = ce.id
WHERE a.id IN (608818, 608821);
select * from users where team_id = 1;
select * from team_settings where team_id = 1;
select * from crm_profiles where crm_configuration_id = 39 order by user_id;
select * from team_features where team_id = 1;
select * from users where team_id = 2;
SELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639
# Preslava N. Ivanova, grou id 3
SELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;
select * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';
select
a.id,
a.type,
a.scheduled_start_time,
a.actual_start_time,
a.created_at,
a.opportunity_id,
a.status
FROM activities a
WHERE opportunity_id = 344
and status IN ('completed', 'received', 'delivered')
and (
(a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))
;
SELECT * FROM users WHERE id = 222;
SELECT * FROM crm_profiles WHERE user_id = 222;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;
select * from group_deal_risk_types;
select * from opportunities where team_id = 1;
SELECT * FROM opportunities WHERE id = 315;
SELECT * FROM crm_field_data WHERE object_id = 315;
select * from crm_field_data where object_id = 260;
select * from generic_ai_prompts where subject_id = 315;
select * from teams; # 36, 21, 121, [EMAIL]
SELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';
# [PASSWORD_DOTS]
select * from teams where id = 1;
select * from crm_configurations where id = 39;
select * from users where team_id = 1;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 1;
# 1 - 00541000004281rAAA
# 204 - 0052g000003freeAAA
# 429 - 0052g000003qGOiAAM
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
select * from activities where type = 'softphone'
and created_at > '2024-12-11 15:24:36' order by id desc;
select * from activity_providers where team_id = 1;
select * from activity_provider_users where activity_provider_id = 328;
select * from opportunities where crm_configuration_id = 39
AND account_id = 178 AND is_closed = false
order by created_at DESC;
select * from contacts where id = 3952;
select * from accounts where id = 178;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations where id = 21;
select * from users where team_id = 36;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 36
and sa.provider = 'bullhorn';
select * from social_accounts where id = 348;
UPDATE social_accounts SET
provider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',
provider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',
expires = 1733998131,
state = 'connected'
WHERE id = 348;
# [PASSWORD_DOTS]
select * from teams where id = 31;
select * from crm_configurations where id = 18;
select * from users where team_id = 31; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 31;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 31
and sa.provider = 'close';
select * from contacts where crm_configuration_id = 18;
# [PASSWORD_DOTS] NEPTUNE [PASSWORD_DOTS]
select * from teams;
select * from users where id IN (1030, 1035, 1052);
select * from crm_configurations;
select * from users where team_id = 65; # 257
select * from team_settings where team_id = 65; # 257
select * from invitations where team_id = 65; # 257
select * from users where email = '[EMAIL]'; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 65;
select * from crm_configurations where id = 53;
select * from accounts where crm_configuration_id = 53 order by id desc;
select * from leads where crm_configuration_id = 53 order by id desc;
select * from contacts where crm_configuration_id = 53 order by id desc;
select * from opportunities where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 53 order by id desc;
select * from crm_fields where crm_configuration_id = 53 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 53 order by id desc;
select * from stages where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 13;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
and sa.provider = 'integration-app';
select * from contacts where crm_configuration_id = 13;
select * from social_accounts where sociable_id = 283;
SELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';
select * from activity_providers where team_id = 65;
SELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
;
# [PASSWORD_DOTS] STAGING [PASSWORD_DOTS]
SELECT * FROM teams;
SELECT * FROM teams WHERE id = 88;
SELECT * FROM teams WHERE id = 89;
select * from team_settings where team_id = 89;
SELECT * FROM users WHERE team_id = 89;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 89;
select * from users;
SELECT * FROM social_accounts WHERE sociable_id = 1761;
SELECT * FROM crm_configurations WHERE id = 70;
select * from accounts where crm_configuration_id = 70 order by id desc;
select * from leads where crm_configuration_id = 70 order by id desc;
select * from contacts where crm_configuration_id = 70 order by id desc;
select * from opportunities where crm_configuration_id = 70 order by id desc;
select * from crm_profiles where crm_configuration_id = 70 order by id desc;
select * from crm_fields where crm_configuration_id = 70 order by id desc;
select * from crm_field_values where crm_field_id = 3536 order by id desc;
select * from crm_layouts where crm_configuration_id = 70 order by id desc;
select * from stages where crm_configuration_id = 70 order by id desc;
select * from business_processes where crm_configuration_id = 70 order by id desc;
select * from business_process_stages where business_process_id = 34;
select * from contacts where id = 10468;
select * from crm_layouts where crm_configuration_id = 70;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;
SELECT * FROM crm_fields WHERE id IN (3533,3534,3535);
select * from activities where crm_configuration_id = 70
and (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;
SELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;
SELECT * FROM activities where crm_configuration_id = 69 ;
SELECT * FROM users WHERE email LIKE '%[EMAIL]%';
SELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;
SELECT * FROM opportunities WHERE id = 385;
select * from participants p
join activities a on p.activity_id = a.id
where a.crm_configuration_id = 70
and (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);
SELECT * FROM participants WHERE id = 1013638;
select * from teams where id = 90;
select * from users where team_id = 90;
select * from social_accounts where social_accounts.sociable_id IN (1960,1760);
SELECT * FROM crm_profiles WHERE crm_configuration_id = 71;
select * from invitations where team_id = 90;
select * from crm_configurations where id = 71;
select * from accounts where crm_configuration_id = 71 order by id desc;
select * from leads where crm_configuration_id = 71 order by id desc;
select * from contacts where crm_configuration_id = 71 order by id desc;
select * from opportunities where crm_configuration_id = 71 order by id desc;
select * from crm_profiles where crm_configuration_id = 71 order by id desc;
select * from crm_fields where crm_configuration_id = 71 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 71 order by id desc;
select * from stages where crm_configuration_id = 71 order by id desc;
select * from users order by secondary_email desc;
select u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa
join users u on sa.sociable_id = u.id
where sa.provider = 'google' and u.email LIKE 'aneliya%';
select * from failed_jobs order by id desc;
select * from users where email = '[EMAIL]' or secondary_email = '[EMAIL]';
select * from teams;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 39;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;
SELECT * FROM crm_configurations WHERE id = 70;
select * from teams where id = 1;
select * from groups where team_id = 1;
select * from users where team_id = 1;
select o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o
join users u on o.user_id = u.id
join groups g on u.group_id = g.id
join role_user ru on u.id = ru.user_id
join roles r on ru.role_id = r.id
where o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';
select * from role_user where user_id = 143;
select * from roles;
select * from role_user;
select * from groups where id = 9;
select * from scope_groups where group_id = 9;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations;
SELECT * FROM social_accounts WHERE sociable_id = 121;
https://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105
https://crmsandbox.zoho.com/crm/
https://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080
https://crm.zoho.com/crm/
org3469620
SELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;
select * from users where email LIKE "%mobile_automation_%";
select * from social_accounts where sociable_id IN (2228);
select * from crm_profiles where user_id IN (2222,2223,2226,2227);
select * from teams order by id desc;
SELECT * FROM users WHERE id = 2229;
SELECT * FROM crm_profiles WHERE user_id = 2229;
select * from opportunities where crm_configuration_id = 88;
select * from crm_fields where crm_configuration_id = 88;
select * from crm_profiles where crm_configuration_id = 88;
SELECT * FROM teams WHERE id = 1;
SELECT * FROM users WHERE id = 143;
SELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;
https://app.staging.jiminny.com/ondemand?
min_duration=1
&
only_recorded=1
&
user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e
&
sequence_number=2
select * from users where team_id = 1 and email like '%stoyan%'
select * from coaching_feedbacks;
select * from teams;
SELECT * FROM users WHERE team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from users where id = 143;
SELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
select * from users where team_id = 2;
select * from activities where crm_configuration_id = 39
and activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'
AND user_id = 143
order by id desc;
# [PASSWORD_DOTS]
select * from teams where id = 142; # 2312, 126
select * from team_settings;
select * from users where team_id = 142; # 21642
SELECT * FROM social_accounts WHERE sociable_id = 21642;
SELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;
select * from crm_profiles where id IN (93);
select * from invitations;
select * from team_features where team_id = 1;
SELECT * FROM crm_configurations WHERE id = 126;
select * from accounts where crm_configuration_id = 126 order by id desc;
select * from leads where crm_configuration_id = 126 order by id desc;
select * from contacts where crm_configuration_id = 126 order by id desc;
select * from opportunities where crm_configuration_id = 126 order by id desc;
select * from crm_profiles where crm_configuration_id = 126 order by id desc;
select * from crm_fields where crm_configuration_id = 126 # 11060
# and type IN ('picklist', 'status')
# and object_type = 'task'
order by id desc;
# 5731,5732,5733
select DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;
select * from crm_layouts where crm_configuration_id = 126 order by id desc;
SELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);
select * from stages where crm_configuration_id = 126 order by id desc;
select * from business_processes where crm_configuration_id = 126 order by id desc;
select * from business_process_stages where business_process_id IN (76,75,74,73);
select * from playbooks where team_id = 142;
select * from playbook_layouts where playbook_id IN (108);
SELECT * FROM playbook_categories WHERE playbook_id IN (108);
select * from teams where id = 130;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 2
and sa.provider = 'hubspot';
SELECT * FROM activities
WHERE crm_configuration_id = 110;
select * from teams;
select * from crm_configurations;
SELECT * FROM activities WHERE id = 628773;
SELECT * FROM crm_profiles WHERE user_id = 1460;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from teams;
select ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id
join permission_role pr on pr.role_id = ru.role_id
join permissions p on p.id = pr.permission_id
where team_id = 495 and p.name IN ('dial');
select * from teams where id = 145;
select * from crm_configurations where id = 129;
select * from social_accounts where sociable_id = 2317;
SELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;
select * from teams where id = 1;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;
SELECT * FROM crm_layout_entities WHERE id = 5507;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');
select * from teams;
select * from activities where crm_configuration_id = 14;
SELECT * FROM social_accounts where provider = 'copper';
select * from activities where id = 628467;
select * from participants where activity_id = 628467;
SELECT * FROM contacts WHERE id = 3969;
SELECT * FROM accounts WHERE id = 177;
SELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;
# [PASSWORD_DOTS] BH
select * from teams where id = 36;
SELECT * FROM crm_configurations WHERE id = 21;
select * from activities where crm_configuration_id = 21 and id = 607901;
select * from activities where crm_configuration_id = 21;
select * roles;
select * from permissions;
select * from permission_role where permission_id = 226;
select * from migrations order by id desc;
# mercury
# neptune
# earth
select * from teams;
select * from teams where id = 19;
select * from teams where id = 27;
select * from users where team_id = 27;
SELECT * FROM crm_configurations WHERE id = 42;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from activities where id = 631461;
SELECT * FROM crm_field_values WHERE crm_field_id = 180;
select * from teams where id = 2;
SELECT * FROM social_accounts WHERE sociable_id = 89;
SELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273
select * from activity_summary_logs where activity_id = 634273;
select * from sidekick_settings where team_id = 2;
select * from teams; # 2, 2
SELECT * FROM crm_configurations WHERE team_id = 2; # 2
select * from team_features where team_id = 2;
select * from features;
SELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';
SELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from users where team_id = 1 and id IN (7160, 3248);
select * from migrations order by id desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1 and sa.provider = 'salesforce';
select * from teams where id = 1;
select * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;
select * from groups where id = 565;
select * from playbooks where team_id = 1;
select * from playbooks where id = 175;
select * from playbook_categories where playbook_id = 175;
select * from users where team_id = 1;
select * from users where id = 7160;
select * from crm_profiles where user_id = 7160;
select * from features;
select
*
# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,
# crm_configuration_id, crm_provider_id, transcription_id, status
from activities where crm_configuration_id = 1 and type = 'conference'
# and crm_provider_id IS NOT NULL
and provider != 'uploader' and actual_start_time IS NOT NULL
ORDER by id desc;
select * from activities where id = 54747783; # 00UO400000pCzojMAC
select p.id, p.activity_type, pc.id, pc.name
FROM playbooks p
join playbook_categories pc on p.id = pc.playbook_id
where p.team_id = 1 and p.activity_type = 'event';
SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';
SELECT * FROM crm_field_values WHERE crm_field_id = 4;
select * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id
where crm_configuration_id = 1 and pl.playbook_id = 175;
select * from teams;
SELECT r.* FROM automated_reports r
join teams t on r.team_id = t.id
WHERE r.frequency = 'daily'
and r.status = 1
AND t.status = 'active'
AND (r.expires_at >= now() OR r.expires_at IS NULL);
select * from automated_report_results where report_id IN (18, 33);
select * from activity_searches where id = 10932;
select * from activity_search_filters where activity_search_id = 10932;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from automated_report_results where report_id IN (37);
select * from users where id IN (7160, 3248);
SELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
67567
|
|
54969
|
1185
|
39
|
2026-04-20T09:26:44.596694+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776677204596_m1.jpg...
|
PhpStorm
|
faVsco.js – AskJiminnyReportsController.php
|
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
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\V2;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Exceptions\ModelNotFoundException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response;
use Throwable;
class AskJiminnyReportsController extends Controller
{
public function __construct(
private readonly AutomatedReportsService $automatedReportsService,
private readonly LoggerInterface $logger,
) {
}
private function isNotOwnedByUser(AutomatedReport $report, User $user): bool
{
return $report->getTeamId() !== $user->getTeamId()
|| $report->getAttribute('created_by') !== $user->getId();
}
public function getFormData(Request $request, ?string $uuid = null): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;
return new JsonResponse(
$this->automatedReportsService->getAskJiminnyReportFormData($user, $report)
);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report form data', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch form data'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Create a new Ask Jiminny report.
*/
public function create(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);
return new JsonResponse($data);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to create Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to create report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Update an existing Ask Jiminny report.
*/
public function update(Request $request, string $uuid): JsonResponse
{
\Illuminate\Support\Facades\Log::channel('custom_channel')->info("UPDATE");
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to update Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to update report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Toggle Ask Jiminny report status (enable/disable).
*/
public function toggleStatus(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReportStatus(
$report,
(bool) $request->input('enabled'),
);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to toggle Ask Jiminny report status', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to toggle report status'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* List all Ask Jiminny reports.
*/
public function list(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$sortColumn = $request->input('sort_column', 'created_at');
$sortDirection = $request->input('sort_direction', 'desc');
$data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);
return new JsonResponse($data);
} catch (Throwable $e) {
$this->logger->error('Failed to list Ask Jiminny reports', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch reports'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Get a single Ask Jiminny report.
*/
public function get(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
return new JsonResponse($this->automatedReportsService->get($uuid));
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to get Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getReportsCount(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$resultsCount = $this->automatedReportsService->getReportResults($report)->count();
return new JsonResponse(['count' => $resultsCount]);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to count report results', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'report_uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to count report results'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Delete an Ask Jiminny report.
*/
public function delete(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
if ($request->boolean('delete_generated_reports')) {
$this->automatedReportsService->deleteReportResults($uuid);
}
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$this->automatedReportsService->delete($uuid);
return new JsonResponse(null, Response::HTTP_NO_CONTENT);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to delete Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to delete report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getFilters(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);
return new JsonResponse(['filters' => $filters]);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report filters', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch filters'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
72
Previous Highlighted Error
Next Highlighted Error
[2026-04-20 09:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:09] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654","trace_id":"df1421c1-9742-4cab-9136-3b91fef3a225"}
[2026-04-20 09:25:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654","trace_id":"df1421c1-9742-4cab-9136-3b91fef3a225"}
[2026-04-20 09:25:21] local.NOTICE: Monitoring start {"correlation_id":"b706ba8d-055b-4160-80ad-68f7db04afcb","trace_id":"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6"}
[2026-04-20 09:25:21] local.NOTICE: Monitoring end {"correlation_id":"b706ba8d-055b-4160-80ad-68f7db04afcb","trace_id":"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6"}
[2026-04-20 09:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"56e73e32-72f0-4918-8a84-53682b5b7df4","trace_id":"842ef1af-6992-4c51-9eca-402784f14ebf"}
[2026-04-20 09:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"56e73e32-72f0-4918-8a84-53682b5b7df4","trace_id":"842ef1af-6992-4c51-9eca-402784f14ebf"}
[2026-04-20 09:25:34] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:34] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:35] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"8d2c9252-4caa-4aa6-8526-6b168446925e","trace_id":"459d9614-5e90-4e06-b5b2-76e349aeb8f2"}
[2026-04-20 09:25:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"8d2c9252-4caa-4aa6-8526-6b168446925e","trace_id":"459d9614-5e90-4e06-b5b2-76e349aeb8f2"}
[2026-04-20 09:25:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"069026eb-9ad3-47a1-91d8-c44c80218bb2","trace_id":"427c0738-0c80-40ee-8eb4-393526780dcf"}
[2026-04-20 09:25:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"069026eb-9ad3-47a1-91d8-c44c80218bb2","trace_id":"427c0738-0c80-40ee-8eb4-393526780dcf"}
[2026-04-20 09:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:49] local.INFO: Running pre-meeting notification command {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: Running conference:monitor:start command for activities in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: [conference:monitor:start] No activities found in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:58] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"09:20","to":"09:25"} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"23:15","to":"23:20"} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:26:04] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"fbefdafa-09f0-44b0-b265-57d594e56fba","trace_id":"57c82917-0c5c-465e-9312-13e514443c0a"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"97247b04-8e86-4aab-9ad7-84e588dc9283","trace_id":"e74bd800-3958-4af1-a7f9-b8da7e70fa68"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"fbefdafa-09f0-44b0-b265-57d594e56fba","trace_id":"57c82917-0c5c-465e-9312-13e514443c0a"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":60.0} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-04-20T09:28:12.386968Z"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"97247b04-8e86-4aab-9ad7-84e588dc9283","trace_id":"e74bd800-3958-4af1-a7f9-b8da7e70fa68"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:17] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:17] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:18] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"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","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":"AskJiminnyReportActivityServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","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":"1","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"9","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\\Http\\Controllers\\API\\V2;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Routing\\Controller;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Exceptions\\ModelNotFoundException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Symfony\\Component\\HttpFoundation\\Response;\nuse Throwable;\n\nclass AskJiminnyReportsController extends Controller\n{\n public function __construct(\n private readonly AutomatedReportsService $automatedReportsService,\n private readonly LoggerInterface $logger,\n ) {\n }\n\n private function isNotOwnedByUser(AutomatedReport $report, User $user): bool\n {\n return $report->getTeamId() !== $user->getTeamId()\n || $report->getAttribute('created_by') !== $user->getId();\n }\n\n public function getFormData(Request $request, ?string $uuid = null): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;\n\n return new JsonResponse(\n $this->automatedReportsService->getAskJiminnyReportFormData($user, $report)\n );\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report form data', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch form data'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Create a new Ask Jiminny report.\n */\n public function create(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);\n\n return new JsonResponse($data);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to create Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to create report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Update an existing Ask Jiminny report.\n */\n public function update(Request $request, string $uuid): JsonResponse\n {\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info(\"UPDATE\");\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to update Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to update report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Toggle Ask Jiminny report status (enable/disable).\n */\n public function toggleStatus(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReportStatus(\n $report,\n (bool) $request->input('enabled'),\n );\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to toggle Ask Jiminny report status', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to toggle report status'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * List all Ask Jiminny reports.\n */\n public function list(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $sortColumn = $request->input('sort_column', 'created_at');\n $sortDirection = $request->input('sort_direction', 'desc');\n\n $data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);\n\n return new JsonResponse($data);\n } catch (Throwable $e) {\n $this->logger->error('Failed to list Ask Jiminny reports', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch reports'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Get a single Ask Jiminny report.\n */\n public function get(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n return new JsonResponse($this->automatedReportsService->get($uuid));\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to get Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getReportsCount(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $resultsCount = $this->automatedReportsService->getReportResults($report)->count();\n\n return new JsonResponse(['count' => $resultsCount]);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to count report results', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'report_uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to count report results'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Delete an Ask Jiminny report.\n */\n public function delete(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n if ($request->boolean('delete_generated_reports')) {\n $this->automatedReportsService->deleteReportResults($uuid);\n }\n\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $this->automatedReportsService->delete($uuid);\n\n return new JsonResponse(null, Response::HTTP_NO_CONTENT);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to delete Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to delete report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getFilters(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);\n\n return new JsonResponse(['filters' => $filters]);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report filters', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch filters'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers\\API\\V2;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Routing\\Controller;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Exceptions\\ModelNotFoundException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Symfony\\Component\\HttpFoundation\\Response;\nuse Throwable;\n\nclass AskJiminnyReportsController extends Controller\n{\n public function __construct(\n private readonly AutomatedReportsService $automatedReportsService,\n private readonly LoggerInterface $logger,\n ) {\n }\n\n private function isNotOwnedByUser(AutomatedReport $report, User $user): bool\n {\n return $report->getTeamId() !== $user->getTeamId()\n || $report->getAttribute('created_by') !== $user->getId();\n }\n\n public function getFormData(Request $request, ?string $uuid = null): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;\n\n return new JsonResponse(\n $this->automatedReportsService->getAskJiminnyReportFormData($user, $report)\n );\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report form data', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch form data'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Create a new Ask Jiminny report.\n */\n public function create(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);\n\n return new JsonResponse($data);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to create Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to create report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Update an existing Ask Jiminny report.\n */\n public function update(Request $request, string $uuid): JsonResponse\n {\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info(\"UPDATE\");\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to update Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to update report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Toggle Ask Jiminny report status (enable/disable).\n */\n public function toggleStatus(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReportStatus(\n $report,\n (bool) $request->input('enabled'),\n );\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to toggle Ask Jiminny report status', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to toggle report status'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * List all Ask Jiminny reports.\n */\n public function list(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $sortColumn = $request->input('sort_column', 'created_at');\n $sortDirection = $request->input('sort_direction', 'desc');\n\n $data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);\n\n return new JsonResponse($data);\n } catch (Throwable $e) {\n $this->logger->error('Failed to list Ask Jiminny reports', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch reports'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Get a single Ask Jiminny report.\n */\n public function get(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n return new JsonResponse($this->automatedReportsService->get($uuid));\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to get Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getReportsCount(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $resultsCount = $this->automatedReportsService->getReportResults($report)->count();\n\n return new JsonResponse(['count' => $resultsCount]);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to count report results', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'report_uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to count report results'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Delete an Ask Jiminny report.\n */\n public function delete(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n if ($request->boolean('delete_generated_reports')) {\n $this->automatedReportsService->deleteReportResults($uuid);\n }\n\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $this->automatedReportsService->delete($uuid);\n\n return new JsonResponse(null, Response::HTTP_NO_CONTENT);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to delete Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to delete report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getFilters(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);\n\n return new JsonResponse(['filters' => $filters]);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report filters', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch filters'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n}","role_description":"text entry area","is_enabled":true,"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":"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":"AXStaticText","text":"72","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":"[2026-04-20 09:25:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:09] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654\",\"trace_id\":\"df1421c1-9742-4cab-9136-3b91fef3a225\"}\n[2026-04-20 09:25:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654\",\"trace_id\":\"df1421c1-9742-4cab-9136-3b91fef3a225\"}\n[2026-04-20 09:25:21] local.NOTICE: Monitoring start {\"correlation_id\":\"b706ba8d-055b-4160-80ad-68f7db04afcb\",\"trace_id\":\"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6\"}\n[2026-04-20 09:25:21] local.NOTICE: Monitoring end {\"correlation_id\":\"b706ba8d-055b-4160-80ad-68f7db04afcb\",\"trace_id\":\"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6\"}\n[2026-04-20 09:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"56e73e32-72f0-4918-8a84-53682b5b7df4\",\"trace_id\":\"842ef1af-6992-4c51-9eca-402784f14ebf\"}\n[2026-04-20 09:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"56e73e32-72f0-4918-8a84-53682b5b7df4\",\"trace_id\":\"842ef1af-6992-4c51-9eca-402784f14ebf\"}\n[2026-04-20 09:25:34] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:34] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:35] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"8d2c9252-4caa-4aa6-8526-6b168446925e\",\"trace_id\":\"459d9614-5e90-4e06-b5b2-76e349aeb8f2\"}\n[2026-04-20 09:25:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"8d2c9252-4caa-4aa6-8526-6b168446925e\",\"trace_id\":\"459d9614-5e90-4e06-b5b2-76e349aeb8f2\"}\n[2026-04-20 09:25:44] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"069026eb-9ad3-47a1-91d8-c44c80218bb2\",\"trace_id\":\"427c0738-0c80-40ee-8eb4-393526780dcf\"}\n[2026-04-20 09:25:44] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"069026eb-9ad3-47a1-91d8-c44c80218bb2\",\"trace_id\":\"427c0738-0c80-40ee-8eb4-393526780dcf\"}\n[2026-04-20 09:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:49] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: Running conference:monitor:start command for activities in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: [conference:monitor:start] No activities found in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"09:20\",\"to\":\"09:25\"} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"23:15\",\"to\":\"23:20\"} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:26:04] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"fbefdafa-09f0-44b0-b265-57d594e56fba\",\"trace_id\":\"57c82917-0c5c-465e-9312-13e514443c0a\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"97247b04-8e86-4aab-9ad7-84e588dc9283\",\"trace_id\":\"e74bd800-3958-4af1-a7f9-b8da7e70fa68\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"fbefdafa-09f0-44b0-b265-57d594e56fba\",\"trace_id\":\"57c82917-0c5c-465e-9312-13e514443c0a\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":60.0} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-04-20T09:28:12.386968Z\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"97247b04-8e86-4aab-9ad7-84e588dc9283\",\"trace_id\":\"e74bd800-3958-4af1-a7f9-b8da7e70fa68\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:17] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:17] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:18] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}","depth":4,"value":"[2026-04-20 09:25:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:09] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654\",\"trace_id\":\"df1421c1-9742-4cab-9136-3b91fef3a225\"}\n[2026-04-20 09:25:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654\",\"trace_id\":\"df1421c1-9742-4cab-9136-3b91fef3a225\"}\n[2026-04-20 09:25:21] local.NOTICE: Monitoring start {\"correlation_id\":\"b706ba8d-055b-4160-80ad-68f7db04afcb\",\"trace_id\":\"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6\"}\n[2026-04-20 09:25:21] local.NOTICE: Monitoring end {\"correlation_id\":\"b706ba8d-055b-4160-80ad-68f7db04afcb\",\"trace_id\":\"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6\"}\n[2026-04-20 09:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"56e73e32-72f0-4918-8a84-53682b5b7df4\",\"trace_id\":\"842ef1af-6992-4c51-9eca-402784f14ebf\"}\n[2026-04-20 09:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"56e73e32-72f0-4918-8a84-53682b5b7df4\",\"trace_id\":\"842ef1af-6992-4c51-9eca-402784f14ebf\"}\n[2026-04-20 09:25:34] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:34] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:35] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"8d2c9252-4caa-4aa6-8526-6b168446925e\",\"trace_id\":\"459d9614-5e90-4e06-b5b2-76e349aeb8f2\"}\n[2026-04-20 09:25:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"8d2c9252-4caa-4aa6-8526-6b168446925e\",\"trace_id\":\"459d9614-5e90-4e06-b5b2-76e349aeb8f2\"}\n[2026-04-20 09:25:44] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"069026eb-9ad3-47a1-91d8-c44c80218bb2\",\"trace_id\":\"427c0738-0c80-40ee-8eb4-393526780dcf\"}\n[2026-04-20 09:25:44] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"069026eb-9ad3-47a1-91d8-c44c80218bb2\",\"trace_id\":\"427c0738-0c80-40ee-8eb4-393526780dcf\"}\n[2026-04-20 09:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:49] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: Running conference:monitor:start command for activities in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: [conference:monitor:start] No activities found in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"09:20\",\"to\":\"09:25\"} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"23:15\",\"to\":\"23:20\"} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:26:04] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"fbefdafa-09f0-44b0-b265-57d594e56fba\",\"trace_id\":\"57c82917-0c5c-465e-9312-13e514443c0a\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"97247b04-8e86-4aab-9ad7-84e588dc9283\",\"trace_id\":\"e74bd800-3958-4af1-a7f9-b8da7e70fa68\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"fbefdafa-09f0-44b0-b265-57d594e56fba\",\"trace_id\":\"57c82917-0c5c-465e-9312-13e514443c0a\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":60.0} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-04-20T09:28:12.386968Z\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"97247b04-8e86-4aab-9ad7-84e588dc9283\",\"trace_id\":\"e74bd800-3958-4af1-a7f9-b8da7e70fa68\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:17] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:17] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:18] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","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":"AXButton","text":"Expand Selected","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":"AXButton","text":"Collapse All","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":"AXButton","text":"Options","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":"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}]...
|
8933834497672324410
|
-2365125490002779451
|
click
|
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
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\V2;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Exceptions\ModelNotFoundException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response;
use Throwable;
class AskJiminnyReportsController extends Controller
{
public function __construct(
private readonly AutomatedReportsService $automatedReportsService,
private readonly LoggerInterface $logger,
) {
}
private function isNotOwnedByUser(AutomatedReport $report, User $user): bool
{
return $report->getTeamId() !== $user->getTeamId()
|| $report->getAttribute('created_by') !== $user->getId();
}
public function getFormData(Request $request, ?string $uuid = null): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;
return new JsonResponse(
$this->automatedReportsService->getAskJiminnyReportFormData($user, $report)
);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report form data', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch form data'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Create a new Ask Jiminny report.
*/
public function create(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);
return new JsonResponse($data);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to create Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to create report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Update an existing Ask Jiminny report.
*/
public function update(Request $request, string $uuid): JsonResponse
{
\Illuminate\Support\Facades\Log::channel('custom_channel')->info("UPDATE");
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to update Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to update report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Toggle Ask Jiminny report status (enable/disable).
*/
public function toggleStatus(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReportStatus(
$report,
(bool) $request->input('enabled'),
);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to toggle Ask Jiminny report status', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to toggle report status'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* List all Ask Jiminny reports.
*/
public function list(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$sortColumn = $request->input('sort_column', 'created_at');
$sortDirection = $request->input('sort_direction', 'desc');
$data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);
return new JsonResponse($data);
} catch (Throwable $e) {
$this->logger->error('Failed to list Ask Jiminny reports', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch reports'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Get a single Ask Jiminny report.
*/
public function get(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
return new JsonResponse($this->automatedReportsService->get($uuid));
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to get Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getReportsCount(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$resultsCount = $this->automatedReportsService->getReportResults($report)->count();
return new JsonResponse(['count' => $resultsCount]);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to count report results', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'report_uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to count report results'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Delete an Ask Jiminny report.
*/
public function delete(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
if ($request->boolean('delete_generated_reports')) {
$this->automatedReportsService->deleteReportResults($uuid);
}
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$this->automatedReportsService->delete($uuid);
return new JsonResponse(null, Response::HTTP_NO_CONTENT);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to delete Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to delete report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getFilters(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);
return new JsonResponse(['filters' => $filters]);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report filters', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch filters'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
72
Previous Highlighted Error
Next Highlighted Error
[2026-04-20 09:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:09] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654","trace_id":"df1421c1-9742-4cab-9136-3b91fef3a225"}
[2026-04-20 09:25:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654","trace_id":"df1421c1-9742-4cab-9136-3b91fef3a225"}
[2026-04-20 09:25:21] local.NOTICE: Monitoring start {"correlation_id":"b706ba8d-055b-4160-80ad-68f7db04afcb","trace_id":"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6"}
[2026-04-20 09:25:21] local.NOTICE: Monitoring end {"correlation_id":"b706ba8d-055b-4160-80ad-68f7db04afcb","trace_id":"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6"}
[2026-04-20 09:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"56e73e32-72f0-4918-8a84-53682b5b7df4","trace_id":"842ef1af-6992-4c51-9eca-402784f14ebf"}
[2026-04-20 09:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"56e73e32-72f0-4918-8a84-53682b5b7df4","trace_id":"842ef1af-6992-4c51-9eca-402784f14ebf"}
[2026-04-20 09:25:34] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:34] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:35] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"8d2c9252-4caa-4aa6-8526-6b168446925e","trace_id":"459d9614-5e90-4e06-b5b2-76e349aeb8f2"}
[2026-04-20 09:25:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"8d2c9252-4caa-4aa6-8526-6b168446925e","trace_id":"459d9614-5e90-4e06-b5b2-76e349aeb8f2"}
[2026-04-20 09:25:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"069026eb-9ad3-47a1-91d8-c44c80218bb2","trace_id":"427c0738-0c80-40ee-8eb4-393526780dcf"}
[2026-04-20 09:25:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"069026eb-9ad3-47a1-91d8-c44c80218bb2","trace_id":"427c0738-0c80-40ee-8eb4-393526780dcf"}
[2026-04-20 09:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:49] local.INFO: Running pre-meeting notification command {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: Running conference:monitor:start command for activities in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: [conference:monitor:start] No activities found in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:58] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"09:20","to":"09:25"} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"23:15","to":"23:20"} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:26:04] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"fbefdafa-09f0-44b0-b265-57d594e56fba","trace_id":"57c82917-0c5c-465e-9312-13e514443c0a"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"97247b04-8e86-4aab-9ad7-84e588dc9283","trace_id":"e74bd800-3958-4af1-a7f9-b8da7e70fa68"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"fbefdafa-09f0-44b0-b265-57d594e56fba","trace_id":"57c82917-0c5c-465e-9312-13e514443c0a"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":60.0} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-04-20T09:28:12.386968Z"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"97247b04-8e86-4aab-9ad7-84e588dc9283","trace_id":"e74bd800-3958-4af1-a7f9-b8da7e70fa68"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:17] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:17] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:18] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
54970
|
1186
|
46
|
2026-04-20T09:26:44.596670+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776677204596_m2.jpg...
|
PhpStorm
|
faVsco.js – AskJiminnyReportsController.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
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\V2;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Exceptions\ModelNotFoundException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response;
use Throwable;
class AskJiminnyReportsController extends Controller
{
public function __construct(
private readonly AutomatedReportsService $automatedReportsService,
private readonly LoggerInterface $logger,
) {
}
private function isNotOwnedByUser(AutomatedReport $report, User $user): bool
{
return $report->getTeamId() !== $user->getTeamId()
|| $report->getAttribute('created_by') !== $user->getId();
}
public function getFormData(Request $request, ?string $uuid = null): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;
return new JsonResponse(
$this->automatedReportsService->getAskJiminnyReportFormData($user, $report)
);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report form data', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch form data'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Create a new Ask Jiminny report.
*/
public function create(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);
return new JsonResponse($data);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to create Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to create report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Update an existing Ask Jiminny report.
*/
public function update(Request $request, string $uuid): JsonResponse
{
\Illuminate\Support\Facades\Log::channel('custom_channel')->info("UPDATE");
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to update Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to update report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Toggle Ask Jiminny report status (enable/disable).
*/
public function toggleStatus(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReportStatus(
$report,
(bool) $request->input('enabled'),
);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to toggle Ask Jiminny report status', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to toggle report status'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* List all Ask Jiminny reports.
*/
public function list(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$sortColumn = $request->input('sort_column', 'created_at');
$sortDirection = $request->input('sort_direction', 'desc');
$data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);
return new JsonResponse($data);
} catch (Throwable $e) {
$this->logger->error('Failed to list Ask Jiminny reports', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch reports'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Get a single Ask Jiminny report.
*/
public function get(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
return new JsonResponse($this->automatedReportsService->get($uuid));
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to get Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getReportsCount(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$resultsCount = $this->automatedReportsService->getReportResults($report)->count();
return new JsonResponse(['count' => $resultsCount]);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to count report results', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'report_uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to count report results'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Delete an Ask Jiminny report.
*/
public function delete(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
if ($request->boolean('delete_generated_reports')) {
$this->automatedReportsService->deleteReportResults($uuid);
}
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$this->automatedReportsService->delete($uuid);
return new JsonResponse(null, Response::HTTP_NO_CONTENT);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to delete Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to delete report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getFilters(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);
return new JsonResponse(['filters' => $filters]);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report filters', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch filters'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
72
Previous Highlighted Error
Next Highlighted Error
[2026-04-20 09:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:09] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654","trace_id":"df1421c1-9742-4cab-9136-3b91fef3a225"}
[2026-04-20 09:25:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654","trace_id":"df1421c1-9742-4cab-9136-3b91fef3a225"}
[2026-04-20 09:25:21] local.NOTICE: Monitoring start {"correlation_id":"b706ba8d-055b-4160-80ad-68f7db04afcb","trace_id":"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6"}
[2026-04-20 09:25:21] local.NOTICE: Monitoring end {"correlation_id":"b706ba8d-055b-4160-80ad-68f7db04afcb","trace_id":"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6"}
[2026-04-20 09:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"56e73e32-72f0-4918-8a84-53682b5b7df4","trace_id":"842ef1af-6992-4c51-9eca-402784f14ebf"}
[2026-04-20 09:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"56e73e32-72f0-4918-8a84-53682b5b7df4","trace_id":"842ef1af-6992-4c51-9eca-402784f14ebf"}
[2026-04-20 09:25:34] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:34] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:35] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"8d2c9252-4caa-4aa6-8526-6b168446925e","trace_id":"459d9614-5e90-4e06-b5b2-76e349aeb8f2"}
[2026-04-20 09:25:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"8d2c9252-4caa-4aa6-8526-6b168446925e","trace_id":"459d9614-5e90-4e06-b5b2-76e349aeb8f2"}
[2026-04-20 09:25:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"069026eb-9ad3-47a1-91d8-c44c80218bb2","trace_id":"427c0738-0c80-40ee-8eb4-393526780dcf"}
[2026-04-20 09:25:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"069026eb-9ad3-47a1-91d8-c44c80218bb2","trace_id":"427c0738-0c80-40ee-8eb4-393526780dcf"}
[2026-04-20 09:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:49] local.INFO: Running pre-meeting notification command {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: Running conference:monitor:start command for activities in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: [conference:monitor:start] No activities found in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:58] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"09:20","to":"09:25"} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"23:15","to":"23:20"} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:26:04] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"fbefdafa-09f0-44b0-b265-57d594e56fba","trace_id":"57c82917-0c5c-465e-9312-13e514443c0a"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"97247b04-8e86-4aab-9ad7-84e588dc9283","trace_id":"e74bd800-3958-4af1-a7f9-b8da7e70fa68"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"fbefdafa-09f0-44b0-b265-57d594e56fba","trace_id":"57c82917-0c5c-465e-9312-13e514443c0a"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":60.0} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-04-20T09:28:12.386968Z"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"97247b04-8e86-4aab-9ad7-84e588dc9283","trace_id":"e74bd800-3958-4af1-a7f9-b8da7e70fa68"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:17] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:17] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:18] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"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.064494684,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny","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.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"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.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"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.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"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.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"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.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"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.27027926,"top":1.0,"width":0.008643617,"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.27027926,"top":1.0,"width":0.008643617,"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.27027926,"top":1.0,"width":0.042220745,"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.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.3700133,"top":0.273743,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"9","depth":4,"bounds":{"left":0.3793218,"top":0.273743,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.38896278,"top":0.27214685,"width":0.00731383,"height":0.018355945},"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.3962766,"top":0.27214685,"width":0.006981383,"height":0.018355945},"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\\Http\\Controllers\\API\\V2;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Routing\\Controller;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Exceptions\\ModelNotFoundException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Symfony\\Component\\HttpFoundation\\Response;\nuse Throwable;\n\nclass AskJiminnyReportsController extends Controller\n{\n public function __construct(\n private readonly AutomatedReportsService $automatedReportsService,\n private readonly LoggerInterface $logger,\n ) {\n }\n\n private function isNotOwnedByUser(AutomatedReport $report, User $user): bool\n {\n return $report->getTeamId() !== $user->getTeamId()\n || $report->getAttribute('created_by') !== $user->getId();\n }\n\n public function getFormData(Request $request, ?string $uuid = null): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;\n\n return new JsonResponse(\n $this->automatedReportsService->getAskJiminnyReportFormData($user, $report)\n );\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report form data', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch form data'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Create a new Ask Jiminny report.\n */\n public function create(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);\n\n return new JsonResponse($data);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to create Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to create report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Update an existing Ask Jiminny report.\n */\n public function update(Request $request, string $uuid): JsonResponse\n {\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info(\"UPDATE\");\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to update Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to update report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Toggle Ask Jiminny report status (enable/disable).\n */\n public function toggleStatus(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReportStatus(\n $report,\n (bool) $request->input('enabled'),\n );\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to toggle Ask Jiminny report status', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to toggle report status'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * List all Ask Jiminny reports.\n */\n public function list(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $sortColumn = $request->input('sort_column', 'created_at');\n $sortDirection = $request->input('sort_direction', 'desc');\n\n $data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);\n\n return new JsonResponse($data);\n } catch (Throwable $e) {\n $this->logger->error('Failed to list Ask Jiminny reports', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch reports'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Get a single Ask Jiminny report.\n */\n public function get(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n return new JsonResponse($this->automatedReportsService->get($uuid));\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to get Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getReportsCount(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $resultsCount = $this->automatedReportsService->getReportResults($report)->count();\n\n return new JsonResponse(['count' => $resultsCount]);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to count report results', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'report_uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to count report results'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Delete an Ask Jiminny report.\n */\n public function delete(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n if ($request->boolean('delete_generated_reports')) {\n $this->automatedReportsService->deleteReportResults($uuid);\n }\n\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $this->automatedReportsService->delete($uuid);\n\n return new JsonResponse(null, Response::HTTP_NO_CONTENT);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to delete Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to delete report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getFilters(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);\n\n return new JsonResponse(['filters' => $filters]);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report filters', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch filters'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers\\API\\V2;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Routing\\Controller;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Exceptions\\ModelNotFoundException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Symfony\\Component\\HttpFoundation\\Response;\nuse Throwable;\n\nclass AskJiminnyReportsController extends Controller\n{\n public function __construct(\n private readonly AutomatedReportsService $automatedReportsService,\n private readonly LoggerInterface $logger,\n ) {\n }\n\n private function isNotOwnedByUser(AutomatedReport $report, User $user): bool\n {\n return $report->getTeamId() !== $user->getTeamId()\n || $report->getAttribute('created_by') !== $user->getId();\n }\n\n public function getFormData(Request $request, ?string $uuid = null): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;\n\n return new JsonResponse(\n $this->automatedReportsService->getAskJiminnyReportFormData($user, $report)\n );\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report form data', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch form data'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Create a new Ask Jiminny report.\n */\n public function create(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);\n\n return new JsonResponse($data);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to create Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to create report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Update an existing Ask Jiminny report.\n */\n public function update(Request $request, string $uuid): JsonResponse\n {\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info(\"UPDATE\");\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to update Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to update report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Toggle Ask Jiminny report status (enable/disable).\n */\n public function toggleStatus(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReportStatus(\n $report,\n (bool) $request->input('enabled'),\n );\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to toggle Ask Jiminny report status', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to toggle report status'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * List all Ask Jiminny reports.\n */\n public function list(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $sortColumn = $request->input('sort_column', 'created_at');\n $sortDirection = $request->input('sort_direction', 'desc');\n\n $data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);\n\n return new JsonResponse($data);\n } catch (Throwable $e) {\n $this->logger->error('Failed to list Ask Jiminny reports', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch reports'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Get a single Ask Jiminny report.\n */\n public function get(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n return new JsonResponse($this->automatedReportsService->get($uuid));\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to get Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getReportsCount(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $resultsCount = $this->automatedReportsService->getReportResults($report)->count();\n\n return new JsonResponse(['count' => $resultsCount]);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to count report results', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'report_uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to count report results'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Delete an Ask Jiminny report.\n */\n public function delete(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n if ($request->boolean('delete_generated_reports')) {\n $this->automatedReportsService->deleteReportResults($uuid);\n }\n\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $this->automatedReportsService->delete($uuid);\n\n return new JsonResponse(null, Response::HTTP_NO_CONTENT);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to delete Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to delete report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getFilters(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);\n\n return new JsonResponse(['filters' => $filters]);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report filters', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch filters'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"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.27027926,"top":1.0,"width":0.008643617,"height":0.0},"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.27027926,"top":1.0,"width":0.008643617,"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.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"72","depth":4,"bounds":{"left":0.7027925,"top":0.10055866,"width":0.009973404,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.7144282,"top":0.09896249,"width":0.00731383,"height":0.018355945},"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.72174203,"top":0.09896249,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-04-20 09:25:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:09] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654\",\"trace_id\":\"df1421c1-9742-4cab-9136-3b91fef3a225\"}\n[2026-04-20 09:25:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654\",\"trace_id\":\"df1421c1-9742-4cab-9136-3b91fef3a225\"}\n[2026-04-20 09:25:21] local.NOTICE: Monitoring start {\"correlation_id\":\"b706ba8d-055b-4160-80ad-68f7db04afcb\",\"trace_id\":\"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6\"}\n[2026-04-20 09:25:21] local.NOTICE: Monitoring end {\"correlation_id\":\"b706ba8d-055b-4160-80ad-68f7db04afcb\",\"trace_id\":\"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6\"}\n[2026-04-20 09:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"56e73e32-72f0-4918-8a84-53682b5b7df4\",\"trace_id\":\"842ef1af-6992-4c51-9eca-402784f14ebf\"}\n[2026-04-20 09:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"56e73e32-72f0-4918-8a84-53682b5b7df4\",\"trace_id\":\"842ef1af-6992-4c51-9eca-402784f14ebf\"}\n[2026-04-20 09:25:34] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:34] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:35] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"8d2c9252-4caa-4aa6-8526-6b168446925e\",\"trace_id\":\"459d9614-5e90-4e06-b5b2-76e349aeb8f2\"}\n[2026-04-20 09:25:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"8d2c9252-4caa-4aa6-8526-6b168446925e\",\"trace_id\":\"459d9614-5e90-4e06-b5b2-76e349aeb8f2\"}\n[2026-04-20 09:25:44] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"069026eb-9ad3-47a1-91d8-c44c80218bb2\",\"trace_id\":\"427c0738-0c80-40ee-8eb4-393526780dcf\"}\n[2026-04-20 09:25:44] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"069026eb-9ad3-47a1-91d8-c44c80218bb2\",\"trace_id\":\"427c0738-0c80-40ee-8eb4-393526780dcf\"}\n[2026-04-20 09:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:49] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: Running conference:monitor:start command for activities in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: [conference:monitor:start] No activities found in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"09:20\",\"to\":\"09:25\"} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"23:15\",\"to\":\"23:20\"} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:26:04] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"fbefdafa-09f0-44b0-b265-57d594e56fba\",\"trace_id\":\"57c82917-0c5c-465e-9312-13e514443c0a\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"97247b04-8e86-4aab-9ad7-84e588dc9283\",\"trace_id\":\"e74bd800-3958-4af1-a7f9-b8da7e70fa68\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"fbefdafa-09f0-44b0-b265-57d594e56fba\",\"trace_id\":\"57c82917-0c5c-465e-9312-13e514443c0a\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":60.0} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-04-20T09:28:12.386968Z\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"97247b04-8e86-4aab-9ad7-84e588dc9283\",\"trace_id\":\"e74bd800-3958-4af1-a7f9-b8da7e70fa68\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:17] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:17] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:18] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}","depth":4,"bounds":{"left":0.4225399,"top":0.09736632,"width":0.5774601,"height":0.90263367},"value":"[2026-04-20 09:25:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:09] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654\",\"trace_id\":\"df1421c1-9742-4cab-9136-3b91fef3a225\"}\n[2026-04-20 09:25:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654\",\"trace_id\":\"df1421c1-9742-4cab-9136-3b91fef3a225\"}\n[2026-04-20 09:25:21] local.NOTICE: Monitoring start {\"correlation_id\":\"b706ba8d-055b-4160-80ad-68f7db04afcb\",\"trace_id\":\"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6\"}\n[2026-04-20 09:25:21] local.NOTICE: Monitoring end {\"correlation_id\":\"b706ba8d-055b-4160-80ad-68f7db04afcb\",\"trace_id\":\"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6\"}\n[2026-04-20 09:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"56e73e32-72f0-4918-8a84-53682b5b7df4\",\"trace_id\":\"842ef1af-6992-4c51-9eca-402784f14ebf\"}\n[2026-04-20 09:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"56e73e32-72f0-4918-8a84-53682b5b7df4\",\"trace_id\":\"842ef1af-6992-4c51-9eca-402784f14ebf\"}\n[2026-04-20 09:25:34] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:34] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:35] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"8d2c9252-4caa-4aa6-8526-6b168446925e\",\"trace_id\":\"459d9614-5e90-4e06-b5b2-76e349aeb8f2\"}\n[2026-04-20 09:25:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"8d2c9252-4caa-4aa6-8526-6b168446925e\",\"trace_id\":\"459d9614-5e90-4e06-b5b2-76e349aeb8f2\"}\n[2026-04-20 09:25:44] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"069026eb-9ad3-47a1-91d8-c44c80218bb2\",\"trace_id\":\"427c0738-0c80-40ee-8eb4-393526780dcf\"}\n[2026-04-20 09:25:44] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"069026eb-9ad3-47a1-91d8-c44c80218bb2\",\"trace_id\":\"427c0738-0c80-40ee-8eb4-393526780dcf\"}\n[2026-04-20 09:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:49] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: Running conference:monitor:start command for activities in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: [conference:monitor:start] No activities found in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"09:20\",\"to\":\"09:25\"} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"23:15\",\"to\":\"23:20\"} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:26:04] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"fbefdafa-09f0-44b0-b265-57d594e56fba\",\"trace_id\":\"57c82917-0c5c-465e-9312-13e514443c0a\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"97247b04-8e86-4aab-9ad7-84e588dc9283\",\"trace_id\":\"e74bd800-3958-4af1-a7f9-b8da7e70fa68\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"fbefdafa-09f0-44b0-b265-57d594e56fba\",\"trace_id\":\"57c82917-0c5c-465e-9312-13e514443c0a\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":60.0} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-04-20T09:28:12.386968Z\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"97247b04-8e86-4aab-9ad7-84e588dc9283\",\"trace_id\":\"e74bd800-3958-4af1-a7f9-b8da7e70fa68\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:17] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:17] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:18] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"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.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
8933834497672324410
|
-2365125490002779451
|
click
|
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
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\V2;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Exceptions\ModelNotFoundException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response;
use Throwable;
class AskJiminnyReportsController extends Controller
{
public function __construct(
private readonly AutomatedReportsService $automatedReportsService,
private readonly LoggerInterface $logger,
) {
}
private function isNotOwnedByUser(AutomatedReport $report, User $user): bool
{
return $report->getTeamId() !== $user->getTeamId()
|| $report->getAttribute('created_by') !== $user->getId();
}
public function getFormData(Request $request, ?string $uuid = null): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;
return new JsonResponse(
$this->automatedReportsService->getAskJiminnyReportFormData($user, $report)
);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report form data', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch form data'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Create a new Ask Jiminny report.
*/
public function create(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);
return new JsonResponse($data);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to create Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to create report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Update an existing Ask Jiminny report.
*/
public function update(Request $request, string $uuid): JsonResponse
{
\Illuminate\Support\Facades\Log::channel('custom_channel')->info("UPDATE");
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to update Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to update report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Toggle Ask Jiminny report status (enable/disable).
*/
public function toggleStatus(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReportStatus(
$report,
(bool) $request->input('enabled'),
);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to toggle Ask Jiminny report status', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to toggle report status'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* List all Ask Jiminny reports.
*/
public function list(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$sortColumn = $request->input('sort_column', 'created_at');
$sortDirection = $request->input('sort_direction', 'desc');
$data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);
return new JsonResponse($data);
} catch (Throwable $e) {
$this->logger->error('Failed to list Ask Jiminny reports', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch reports'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Get a single Ask Jiminny report.
*/
public function get(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
return new JsonResponse($this->automatedReportsService->get($uuid));
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to get Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getReportsCount(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$resultsCount = $this->automatedReportsService->getReportResults($report)->count();
return new JsonResponse(['count' => $resultsCount]);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to count report results', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'report_uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to count report results'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Delete an Ask Jiminny report.
*/
public function delete(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
if ($request->boolean('delete_generated_reports')) {
$this->automatedReportsService->deleteReportResults($uuid);
}
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$this->automatedReportsService->delete($uuid);
return new JsonResponse(null, Response::HTTP_NO_CONTENT);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to delete Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to delete report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getFilters(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);
return new JsonResponse(['filters' => $filters]);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report filters', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch filters'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
72
Previous Highlighted Error
Next Highlighted Error
[2026-04-20 09:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:09] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654","trace_id":"df1421c1-9742-4cab-9136-3b91fef3a225"}
[2026-04-20 09:25:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654","trace_id":"df1421c1-9742-4cab-9136-3b91fef3a225"}
[2026-04-20 09:25:21] local.NOTICE: Monitoring start {"correlation_id":"b706ba8d-055b-4160-80ad-68f7db04afcb","trace_id":"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6"}
[2026-04-20 09:25:21] local.NOTICE: Monitoring end {"correlation_id":"b706ba8d-055b-4160-80ad-68f7db04afcb","trace_id":"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6"}
[2026-04-20 09:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"56e73e32-72f0-4918-8a84-53682b5b7df4","trace_id":"842ef1af-6992-4c51-9eca-402784f14ebf"}
[2026-04-20 09:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"56e73e32-72f0-4918-8a84-53682b5b7df4","trace_id":"842ef1af-6992-4c51-9eca-402784f14ebf"}
[2026-04-20 09:25:34] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:34] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:35] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"8d2c9252-4caa-4aa6-8526-6b168446925e","trace_id":"459d9614-5e90-4e06-b5b2-76e349aeb8f2"}
[2026-04-20 09:25:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"8d2c9252-4caa-4aa6-8526-6b168446925e","trace_id":"459d9614-5e90-4e06-b5b2-76e349aeb8f2"}
[2026-04-20 09:25:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"069026eb-9ad3-47a1-91d8-c44c80218bb2","trace_id":"427c0738-0c80-40ee-8eb4-393526780dcf"}
[2026-04-20 09:25:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"069026eb-9ad3-47a1-91d8-c44c80218bb2","trace_id":"427c0738-0c80-40ee-8eb4-393526780dcf"}
[2026-04-20 09:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:49] local.INFO: Running pre-meeting notification command {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: Running conference:monitor:start command for activities in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: [conference:monitor:start] No activities found in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:58] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"09:20","to":"09:25"} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"23:15","to":"23:20"} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:26:04] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"fbefdafa-09f0-44b0-b265-57d594e56fba","trace_id":"57c82917-0c5c-465e-9312-13e514443c0a"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"97247b04-8e86-4aab-9ad7-84e588dc9283","trace_id":"e74bd800-3958-4af1-a7f9-b8da7e70fa68"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"fbefdafa-09f0-44b0-b265-57d594e56fba","trace_id":"57c82917-0c5c-465e-9312-13e514443c0a"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":60.0} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-04-20T09:28:12.386968Z"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"97247b04-8e86-4aab-9ad7-84e588dc9283","trace_id":"e74bd800-3958-4af1-a7f9-b8da7e70fa68"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:17] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:17] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:18] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
54972
|
1186
|
48
|
2026-04-20T09:26:52.592951+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776677212592_m2.jpg...
|
PhpStorm
|
faVsco.js – AskJiminnyReportsController.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
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\V2;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Exceptions\ModelNotFoundException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response;
use Throwable;
class AskJiminnyReportsController extends Controller
{
public function __construct(
private readonly AutomatedReportsService $automatedReportsService,
private readonly LoggerInterface $logger,
) {
}
private function isNotOwnedByUser(AutomatedReport $report, User $user): bool
{
return $report->getTeamId() !== $user->getTeamId()
|| $report->getAttribute('created_by') !== $user->getId();
}
public function getFormData(Request $request, ?string $uuid = null): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;
return new JsonResponse(
$this->automatedReportsService->getAskJiminnyReportFormData($user, $report)
);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report form data', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch form data'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Create a new Ask Jiminny report.
*/
public function create(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);
return new JsonResponse($data);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to create Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to create report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Update an existing Ask Jiminny report.
*/
public function update(Request $request, string $uuid): JsonResponse
{
\Illuminate\Support\Facades\Log::channel('custom_channel')->info("UPDATE");
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to update Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to update report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Toggle Ask Jiminny report status (enable/disable).
*/
public function toggleStatus(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReportStatus(
$report,
(bool) $request->input('enabled'),
);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to toggle Ask Jiminny report status', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to toggle report status'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* List all Ask Jiminny reports.
*/
public function list(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$sortColumn = $request->input('sort_column', 'created_at');
$sortDirection = $request->input('sort_direction', 'desc');
$data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);
return new JsonResponse($data);
} catch (Throwable $e) {
$this->logger->error('Failed to list Ask Jiminny reports', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch reports'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Get a single Ask Jiminny report.
*/
public function get(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
return new JsonResponse($this->automatedReportsService->get($uuid));
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to get Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getReportsCount(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$resultsCount = $this->automatedReportsService->getReportResults($report)->count();
return new JsonResponse(['count' => $resultsCount]);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to count report results', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'report_uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to count report results'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Delete an Ask Jiminny report.
*/
public function delete(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
if ($request->boolean('delete_generated_reports')) {
$this->automatedReportsService->deleteReportResults($uuid);
}
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$this->automatedReportsService->delete($uuid);
return new JsonResponse(null, Response::HTTP_NO_CONTENT);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to delete Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to delete report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getFilters(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);
return new JsonResponse(['filters' => $filters]);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report filters', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch filters'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
72
Previous Highlighted Error
Next Highlighted Error
[2026-04-20 09:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:09] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654","trace_id":"df1421c1-9742-4cab-9136-3b91fef3a225"}
[2026-04-20 09:25:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654","trace_id":"df1421c1-9742-4cab-9136-3b91fef3a225"}
[2026-04-20 09:25:21] local.NOTICE: Monitoring start {"correlation_id":"b706ba8d-055b-4160-80ad-68f7db04afcb","trace_id":"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6"}
[2026-04-20 09:25:21] local.NOTICE: Monitoring end {"correlation_id":"b706ba8d-055b-4160-80ad-68f7db04afcb","trace_id":"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6"}
[2026-04-20 09:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"56e73e32-72f0-4918-8a84-53682b5b7df4","trace_id":"842ef1af-6992-4c51-9eca-402784f14ebf"}
[2026-04-20 09:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"56e73e32-72f0-4918-8a84-53682b5b7df4","trace_id":"842ef1af-6992-4c51-9eca-402784f14ebf"}
[2026-04-20 09:25:34] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:34] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:35] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"8d2c9252-4caa-4aa6-8526-6b168446925e","trace_id":"459d9614-5e90-4e06-b5b2-76e349aeb8f2"}
[2026-04-20 09:25:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"8d2c9252-4caa-4aa6-8526-6b168446925e","trace_id":"459d9614-5e90-4e06-b5b2-76e349aeb8f2"}
[2026-04-20 09:25:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"069026eb-9ad3-47a1-91d8-c44c80218bb2","trace_id":"427c0738-0c80-40ee-8eb4-393526780dcf"}
[2026-04-20 09:25:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"069026eb-9ad3-47a1-91d8-c44c80218bb2","trace_id":"427c0738-0c80-40ee-8eb4-393526780dcf"}
[2026-04-20 09:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:49] local.INFO: Running pre-meeting notification command {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: Running conference:monitor:start command for activities in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: [conference:monitor:start] No activities found in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:58] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"09:20","to":"09:25"} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"23:15","to":"23:20"} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:26:04] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"fbefdafa-09f0-44b0-b265-57d594e56fba","trace_id":"57c82917-0c5c-465e-9312-13e514443c0a"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"97247b04-8e86-4aab-9ad7-84e588dc9283","trace_id":"e74bd800-3958-4af1-a7f9-b8da7e70fa68"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"fbefdafa-09f0-44b0-b265-57d594e56fba","trace_id":"57c82917-0c5c-465e-9312-13e514443c0a"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":60.0} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-04-20T09:28:12.386968Z"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"97247b04-8e86-4aab-9ad7-84e588dc9283","trace_id":"e74bd800-3958-4af1-a7f9-b8da7e70fa68"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:17] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:17] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:18] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"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.064494684,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny","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.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"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.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"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.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"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.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"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.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"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.27027926,"top":1.0,"width":0.008643617,"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.27027926,"top":1.0,"width":0.008643617,"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.27027926,"top":1.0,"width":0.042220745,"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.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.3700133,"top":0.273743,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"9","depth":4,"bounds":{"left":0.3793218,"top":0.273743,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.38896278,"top":0.27214685,"width":0.00731383,"height":0.018355945},"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.3962766,"top":0.27214685,"width":0.006981383,"height":0.018355945},"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\\Http\\Controllers\\API\\V2;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Routing\\Controller;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Exceptions\\ModelNotFoundException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Symfony\\Component\\HttpFoundation\\Response;\nuse Throwable;\n\nclass AskJiminnyReportsController extends Controller\n{\n public function __construct(\n private readonly AutomatedReportsService $automatedReportsService,\n private readonly LoggerInterface $logger,\n ) {\n }\n\n private function isNotOwnedByUser(AutomatedReport $report, User $user): bool\n {\n return $report->getTeamId() !== $user->getTeamId()\n || $report->getAttribute('created_by') !== $user->getId();\n }\n\n public function getFormData(Request $request, ?string $uuid = null): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;\n\n return new JsonResponse(\n $this->automatedReportsService->getAskJiminnyReportFormData($user, $report)\n );\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report form data', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch form data'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Create a new Ask Jiminny report.\n */\n public function create(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);\n\n return new JsonResponse($data);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to create Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to create report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Update an existing Ask Jiminny report.\n */\n public function update(Request $request, string $uuid): JsonResponse\n {\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info(\"UPDATE\");\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to update Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to update report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Toggle Ask Jiminny report status (enable/disable).\n */\n public function toggleStatus(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReportStatus(\n $report,\n (bool) $request->input('enabled'),\n );\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to toggle Ask Jiminny report status', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to toggle report status'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * List all Ask Jiminny reports.\n */\n public function list(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $sortColumn = $request->input('sort_column', 'created_at');\n $sortDirection = $request->input('sort_direction', 'desc');\n\n $data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);\n\n return new JsonResponse($data);\n } catch (Throwable $e) {\n $this->logger->error('Failed to list Ask Jiminny reports', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch reports'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Get a single Ask Jiminny report.\n */\n public function get(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n return new JsonResponse($this->automatedReportsService->get($uuid));\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to get Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getReportsCount(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $resultsCount = $this->automatedReportsService->getReportResults($report)->count();\n\n return new JsonResponse(['count' => $resultsCount]);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to count report results', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'report_uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to count report results'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Delete an Ask Jiminny report.\n */\n public function delete(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n if ($request->boolean('delete_generated_reports')) {\n $this->automatedReportsService->deleteReportResults($uuid);\n }\n\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $this->automatedReportsService->delete($uuid);\n\n return new JsonResponse(null, Response::HTTP_NO_CONTENT);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to delete Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to delete report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getFilters(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);\n\n return new JsonResponse(['filters' => $filters]);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report filters', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch filters'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers\\API\\V2;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Routing\\Controller;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Exceptions\\ModelNotFoundException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Symfony\\Component\\HttpFoundation\\Response;\nuse Throwable;\n\nclass AskJiminnyReportsController extends Controller\n{\n public function __construct(\n private readonly AutomatedReportsService $automatedReportsService,\n private readonly LoggerInterface $logger,\n ) {\n }\n\n private function isNotOwnedByUser(AutomatedReport $report, User $user): bool\n {\n return $report->getTeamId() !== $user->getTeamId()\n || $report->getAttribute('created_by') !== $user->getId();\n }\n\n public function getFormData(Request $request, ?string $uuid = null): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;\n\n return new JsonResponse(\n $this->automatedReportsService->getAskJiminnyReportFormData($user, $report)\n );\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report form data', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch form data'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Create a new Ask Jiminny report.\n */\n public function create(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);\n\n return new JsonResponse($data);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to create Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to create report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Update an existing Ask Jiminny report.\n */\n public function update(Request $request, string $uuid): JsonResponse\n {\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info(\"UPDATE\");\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to update Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to update report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Toggle Ask Jiminny report status (enable/disable).\n */\n public function toggleStatus(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReportStatus(\n $report,\n (bool) $request->input('enabled'),\n );\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to toggle Ask Jiminny report status', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to toggle report status'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * List all Ask Jiminny reports.\n */\n public function list(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $sortColumn = $request->input('sort_column', 'created_at');\n $sortDirection = $request->input('sort_direction', 'desc');\n\n $data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);\n\n return new JsonResponse($data);\n } catch (Throwable $e) {\n $this->logger->error('Failed to list Ask Jiminny reports', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch reports'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Get a single Ask Jiminny report.\n */\n public function get(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n return new JsonResponse($this->automatedReportsService->get($uuid));\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to get Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getReportsCount(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $resultsCount = $this->automatedReportsService->getReportResults($report)->count();\n\n return new JsonResponse(['count' => $resultsCount]);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to count report results', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'report_uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to count report results'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Delete an Ask Jiminny report.\n */\n public function delete(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n if ($request->boolean('delete_generated_reports')) {\n $this->automatedReportsService->deleteReportResults($uuid);\n }\n\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $this->automatedReportsService->delete($uuid);\n\n return new JsonResponse(null, Response::HTTP_NO_CONTENT);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to delete Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to delete report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getFilters(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);\n\n return new JsonResponse(['filters' => $filters]);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report filters', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch filters'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"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.27027926,"top":1.0,"width":0.008643617,"height":0.0},"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.27027926,"top":1.0,"width":0.008643617,"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.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"72","depth":4,"bounds":{"left":0.7027925,"top":0.10055866,"width":0.009973404,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.7144282,"top":0.09896249,"width":0.00731383,"height":0.018355945},"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.72174203,"top":0.09896249,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-04-20 09:25:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:09] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654\",\"trace_id\":\"df1421c1-9742-4cab-9136-3b91fef3a225\"}\n[2026-04-20 09:25:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654\",\"trace_id\":\"df1421c1-9742-4cab-9136-3b91fef3a225\"}\n[2026-04-20 09:25:21] local.NOTICE: Monitoring start {\"correlation_id\":\"b706ba8d-055b-4160-80ad-68f7db04afcb\",\"trace_id\":\"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6\"}\n[2026-04-20 09:25:21] local.NOTICE: Monitoring end {\"correlation_id\":\"b706ba8d-055b-4160-80ad-68f7db04afcb\",\"trace_id\":\"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6\"}\n[2026-04-20 09:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"56e73e32-72f0-4918-8a84-53682b5b7df4\",\"trace_id\":\"842ef1af-6992-4c51-9eca-402784f14ebf\"}\n[2026-04-20 09:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"56e73e32-72f0-4918-8a84-53682b5b7df4\",\"trace_id\":\"842ef1af-6992-4c51-9eca-402784f14ebf\"}\n[2026-04-20 09:25:34] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:34] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:35] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"8d2c9252-4caa-4aa6-8526-6b168446925e\",\"trace_id\":\"459d9614-5e90-4e06-b5b2-76e349aeb8f2\"}\n[2026-04-20 09:25:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"8d2c9252-4caa-4aa6-8526-6b168446925e\",\"trace_id\":\"459d9614-5e90-4e06-b5b2-76e349aeb8f2\"}\n[2026-04-20 09:25:44] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"069026eb-9ad3-47a1-91d8-c44c80218bb2\",\"trace_id\":\"427c0738-0c80-40ee-8eb4-393526780dcf\"}\n[2026-04-20 09:25:44] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"069026eb-9ad3-47a1-91d8-c44c80218bb2\",\"trace_id\":\"427c0738-0c80-40ee-8eb4-393526780dcf\"}\n[2026-04-20 09:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:49] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: Running conference:monitor:start command for activities in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: [conference:monitor:start] No activities found in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"09:20\",\"to\":\"09:25\"} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"23:15\",\"to\":\"23:20\"} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:26:04] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"fbefdafa-09f0-44b0-b265-57d594e56fba\",\"trace_id\":\"57c82917-0c5c-465e-9312-13e514443c0a\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"97247b04-8e86-4aab-9ad7-84e588dc9283\",\"trace_id\":\"e74bd800-3958-4af1-a7f9-b8da7e70fa68\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"fbefdafa-09f0-44b0-b265-57d594e56fba\",\"trace_id\":\"57c82917-0c5c-465e-9312-13e514443c0a\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":60.0} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-04-20T09:28:12.386968Z\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"97247b04-8e86-4aab-9ad7-84e588dc9283\",\"trace_id\":\"e74bd800-3958-4af1-a7f9-b8da7e70fa68\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:17] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:17] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:18] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}","depth":4,"bounds":{"left":0.4225399,"top":0.09736632,"width":0.5774601,"height":0.90263367},"value":"[2026-04-20 09:25:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:09] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:09] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"d1aac6bc-6000-46c5-8f94-0efb4f04038c\",\"trace_id\":\"76738abf-c9e7-46d4-92d5-b01843c65288\"}\n[2026-04-20 09:25:14] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654\",\"trace_id\":\"df1421c1-9742-4cab-9136-3b91fef3a225\"}\n[2026-04-20 09:25:15] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654\",\"trace_id\":\"df1421c1-9742-4cab-9136-3b91fef3a225\"}\n[2026-04-20 09:25:21] local.NOTICE: Monitoring start {\"correlation_id\":\"b706ba8d-055b-4160-80ad-68f7db04afcb\",\"trace_id\":\"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6\"}\n[2026-04-20 09:25:21] local.NOTICE: Monitoring end {\"correlation_id\":\"b706ba8d-055b-4160-80ad-68f7db04afcb\",\"trace_id\":\"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6\"}\n[2026-04-20 09:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"56e73e32-72f0-4918-8a84-53682b5b7df4\",\"trace_id\":\"842ef1af-6992-4c51-9eca-402784f14ebf\"}\n[2026-04-20 09:25:29] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"56e73e32-72f0-4918-8a84-53682b5b7df4\",\"trace_id\":\"842ef1af-6992-4c51-9eca-402784f14ebf\"}\n[2026-04-20 09:25:34] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:34] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:35] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:35] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"cf673cfc-b1e6-49cd-9ec5-cef9891433e9\",\"trace_id\":\"6af026e0-6a3c-4bb9-b494-aab268ea638c\"}\n[2026-04-20 09:25:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"8d2c9252-4caa-4aa6-8526-6b168446925e\",\"trace_id\":\"459d9614-5e90-4e06-b5b2-76e349aeb8f2\"}\n[2026-04-20 09:25:39] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"activity:purge-stale\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"8d2c9252-4caa-4aa6-8526-6b168446925e\",\"trace_id\":\"459d9614-5e90-4e06-b5b2-76e349aeb8f2\"}\n[2026-04-20 09:25:44] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"069026eb-9ad3-47a1-91d8-c44c80218bb2\",\"trace_id\":\"427c0738-0c80-40ee-8eb4-393526780dcf\"}\n[2026-04-20 09:25:44] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:text-relay:sync\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"069026eb-9ad3-47a1-91d8-c44c80218bb2\",\"trace_id\":\"427c0738-0c80-40ee-8eb4-393526780dcf\"}\n[2026-04-20 09:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:49] local.INFO: Running pre-meeting notification command {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:49] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-notification\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"5bc77933-1bc1-4f9a-b27f-be3714056b82\",\"trace_id\":\"143765fb-3410-41c9-9ae6-90726e44ef00\"}\n[2026-04-20 09:25:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: Running conference:monitor:start command for activities in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: [conference:monitor:start] No activities found in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:53] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:start\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"91cfa967-2e79-41da-92e6-f04353cd5144\",\"trace_id\":\"41959cde-0f13-420c-899a-86eaea3d3e35\"}\n[2026-04-20 09:25:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesEnded {\"from\":\"09:20\",\"to\":\"09:25\"} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\\Console\\Commands\\Activities\\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {\"from\":\"23:15\",\"to\":\"23:20\"} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:25:58] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:monitor:end\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"74699d30-5655-4839-8916-9eec873aa45a\",\"trace_id\":\"c5b0c7ed-c6a0-43be-bae7-6e7228f692af\"}\n[2026-04-20 09:26:04] local.NOTICE: Repairing HubSpot tokens start {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":59,\"provider\":\"hubspot\",\"refreshToken\":\"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.ERROR: Failed to refresh HubSpot token {\"account_id\":59,\"updated_at\":\"2025-10-03 09:32:05\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":306,\"provider\":\"hubspot\",\"refreshToken\":\"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {\"account_id\":306,\"updated_at\":\"2023-11-27 09:30:03\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: Trying to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: [EncryptedTokenManager] Generating access token. {\"mode\":\"legacy\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.INFO: [SocialAccountService] Refreshing token from provider {\"socialAccountId\":1372,\"provider\":\"hubspot\",\"refreshToken\":\"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4\",\"state\":\"full-refresh\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {\"account_id\":1372,\"updated_at\":\"2025-10-02 14:47:06\",\"reason\":\"missing or invalid refresh token\",\"previous\":\"\"} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:05] local.NOTICE: Repairing HubSpot tokens end {\"total\":3,\"fixed\":0,\"failed\":3} {\"correlation_id\":\"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8\",\"trace_id\":\"2a2eb43c-6512-4120-8d05-8057da80d0f4\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"fbefdafa-09f0-44b0-b265-57d594e56fba\",\"trace_id\":\"57c82917-0c5c-465e-9312-13e514443c0a\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"97247b04-8e86-4aab-9ad7-84e588dc9283\",\"trace_id\":\"e74bd800-3958-4af1-a7f9-b8da7e70fa68\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"crm:bullhorn:ping\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"fbefdafa-09f0-44b0-b265-57d594e56fba\",\"trace_id\":\"57c82917-0c5c-465e-9312-13e514443c0a\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Command] Starting polling service {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Service starting {\"memory_limit\":\"256M\",\"max_execution_time\":\"0\",\"initial_memory_mb\":60.0} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Acquired polling lock {\"expires_at\":\"2026-04-20T09:28:12.386968Z\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"conference:pre-meeting-reminder\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"97247b04-8e86-4aab-9ad7-84e588dc9283\",\"trace_id\":\"e74bd800-3958-4af1-a7f9-b8da7e70fa68\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {\"expires_in\":1800,\"cached_for\":1500} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:17] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:17] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:18] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}\n[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"a227fdaf-45a8-4f92-a341-7267c26312dc\",\"trace_id\":\"ff115b4b-844c-4b5f-8925-a0d80a1dc35e\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"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.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
8933834497672324410
|
-2365125490002779451
|
click
|
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
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\V2;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Exceptions\ModelNotFoundException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response;
use Throwable;
class AskJiminnyReportsController extends Controller
{
public function __construct(
private readonly AutomatedReportsService $automatedReportsService,
private readonly LoggerInterface $logger,
) {
}
private function isNotOwnedByUser(AutomatedReport $report, User $user): bool
{
return $report->getTeamId() !== $user->getTeamId()
|| $report->getAttribute('created_by') !== $user->getId();
}
public function getFormData(Request $request, ?string $uuid = null): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;
return new JsonResponse(
$this->automatedReportsService->getAskJiminnyReportFormData($user, $report)
);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report form data', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch form data'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Create a new Ask Jiminny report.
*/
public function create(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);
return new JsonResponse($data);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to create Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to create report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Update an existing Ask Jiminny report.
*/
public function update(Request $request, string $uuid): JsonResponse
{
\Illuminate\Support\Facades\Log::channel('custom_channel')->info("UPDATE");
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to update Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to update report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Toggle Ask Jiminny report status (enable/disable).
*/
public function toggleStatus(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReportStatus(
$report,
(bool) $request->input('enabled'),
);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to toggle Ask Jiminny report status', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to toggle report status'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* List all Ask Jiminny reports.
*/
public function list(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$sortColumn = $request->input('sort_column', 'created_at');
$sortDirection = $request->input('sort_direction', 'desc');
$data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);
return new JsonResponse($data);
} catch (Throwable $e) {
$this->logger->error('Failed to list Ask Jiminny reports', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch reports'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Get a single Ask Jiminny report.
*/
public function get(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
return new JsonResponse($this->automatedReportsService->get($uuid));
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to get Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getReportsCount(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$resultsCount = $this->automatedReportsService->getReportResults($report)->count();
return new JsonResponse(['count' => $resultsCount]);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to count report results', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'report_uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to count report results'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Delete an Ask Jiminny report.
*/
public function delete(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
if ($request->boolean('delete_generated_reports')) {
$this->automatedReportsService->deleteReportResults($uuid);
}
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$this->automatedReportsService->delete($uuid);
return new JsonResponse(null, Response::HTTP_NO_CONTENT);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to delete Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to delete report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getFilters(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);
return new JsonResponse(['filters' => $filters]);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report filters', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch filters'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
72
Previous Highlighted Error
Next Highlighted Error
[2026-04-20 09:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:09] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:09] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"d1aac6bc-6000-46c5-8f94-0efb4f04038c","trace_id":"76738abf-c9e7-46d4-92d5-b01843c65288"}
[2026-04-20 09:25:14] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654","trace_id":"df1421c1-9742-4cab-9136-3b91fef3a225"}
[2026-04-20 09:25:15] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"6a7007ae-7e30-40d3-a9c9-a2ba6ebb4654","trace_id":"df1421c1-9742-4cab-9136-3b91fef3a225"}
[2026-04-20 09:25:21] local.NOTICE: Monitoring start {"correlation_id":"b706ba8d-055b-4160-80ad-68f7db04afcb","trace_id":"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6"}
[2026-04-20 09:25:21] local.NOTICE: Monitoring end {"correlation_id":"b706ba8d-055b-4160-80ad-68f7db04afcb","trace_id":"0b7a1130-21d3-4aba-b7ec-c65d2c0f65b6"}
[2026-04-20 09:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"56e73e32-72f0-4918-8a84-53682b5b7df4","trace_id":"842ef1af-6992-4c51-9eca-402784f14ebf"}
[2026-04-20 09:25:29] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"56e73e32-72f0-4918-8a84-53682b5b7df4","trace_id":"842ef1af-6992-4c51-9eca-402784f14ebf"}
[2026-04-20 09:25:34] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:34] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:35] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:35] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"cf673cfc-b1e6-49cd-9ec5-cef9891433e9","trace_id":"6af026e0-6a3c-4bb9-b494-aab268ea638c"}
[2026-04-20 09:25:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"8d2c9252-4caa-4aa6-8526-6b168446925e","trace_id":"459d9614-5e90-4e06-b5b2-76e349aeb8f2"}
[2026-04-20 09:25:39] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"activity:purge-stale","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"8d2c9252-4caa-4aa6-8526-6b168446925e","trace_id":"459d9614-5e90-4e06-b5b2-76e349aeb8f2"}
[2026-04-20 09:25:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"069026eb-9ad3-47a1-91d8-c44c80218bb2","trace_id":"427c0738-0c80-40ee-8eb4-393526780dcf"}
[2026-04-20 09:25:44] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:text-relay:sync","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"069026eb-9ad3-47a1-91d8-c44c80218bb2","trace_id":"427c0738-0c80-40ee-8eb4-393526780dcf"}
[2026-04-20 09:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:49] local.INFO: Running pre-meeting notification command {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:49] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-notification","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"5bc77933-1bc1-4f9a-b27f-be3714056b82","trace_id":"143765fb-3410-41c9-9ae6-90726e44ef00"}
[2026-04-20 09:25:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: Running conference:monitor:start command for activities in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: [conference:monitor:start] No activities found in (2026-04-20 09:15:00, 2026-04-20 09:20:00] {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:53] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:start","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"91cfa967-2e79-41da-92e6-f04353cd5144","trace_id":"41959cde-0f13-420c-899a-86eaea3d3e35"}
[2026-04-20 09:25:58] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesEnded {"from":"09:20","to":"09:25"} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: conference:monitor:end:Jiminny\Console\Commands\Activities\MonitorMeetingEndCommand::logActivitiesWithUnfinishedSession {"from":"23:15","to":"23:20"} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:25:58] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:monitor:end","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"74699d30-5655-4839-8916-9eec873aa45a","trace_id":"c5b0c7ed-c6a0-43be-bae7-6e7228f692af"}
[2026-04-20 09:26:04] local.NOTICE: Repairing HubSpot tokens start {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":59,"provider":"hubspot","refreshToken":"97b78f6e2cc49965c00c2492b602b02708b1392551e6b3f113fbaa48992af90b","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.ERROR: Failed to refresh HubSpot token {"account_id":59,"updated_at":"2025-10-03 09:32:05","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: Trying to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:04] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":306,"provider":"hubspot","refreshToken":"6fa6aa8cc641d131231acc3470f5c03cb3b07b2e580fb18f8acb3b1dbb72549b","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {"account_id":306,"updated_at":"2023-11-27 09:30:03","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: Trying to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: [EncryptedTokenManager] Generating access token. {"mode":"legacy"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.INFO: [SocialAccountService] Refreshing token from provider {"socialAccountId":1372,"provider":"hubspot","refreshToken":"9aa73948c761da29dce46c177cf9aee1fde483a44169ca38723f9f0597d7a8c4","state":"full-refresh"} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.ERROR: Failed to refresh HubSpot token {"account_id":1372,"updated_at":"2025-10-02 14:47:06","reason":"missing or invalid refresh token","previous":""} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:05] local.NOTICE: Repairing HubSpot tokens end {"total":3,"fixed":0,"failed":3} {"correlation_id":"55ca1c5c-e8f0-44d6-af86-d9debd61c9d8","trace_id":"2a2eb43c-6512-4120-8d05-8057da80d0f4"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"fbefdafa-09f0-44b0-b265-57d594e56fba","trace_id":"57c82917-0c5c-465e-9312-13e514443c0a"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"97247b04-8e86-4aab-9ad7-84e588dc9283","trace_id":"e74bd800-3958-4af1-a7f9-b8da7e70fa68"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"crm:bullhorn:ping","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"fbefdafa-09f0-44b0-b265-57d594e56fba","trace_id":"57c82917-0c5c-465e-9312-13e514443c0a"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Command] Starting polling service {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Service starting {"memory_limit":"256M","max_execution_time":"0","initial_memory_mb":60.0} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Acquired polling lock {"expires_at":"2026-04-20T09:28:12.386968Z"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Requesting new client credentials token {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"conference:pre-meeting-reminder","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"97247b04-8e86-4aab-9ad7-84e588dc9283","trace_id":"e74bd800-3958-4af1-a7f9-b8da7e70fa68"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Auth] Successfully obtained new access token {"expires_in":1800,"cached_for":1500} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:12] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:17] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:17] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:18] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:23] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
[2026-04-20 09:26:38] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"a227fdaf-45a8-4f92-a341-7267c26312dc","trace_id":"ff115b4b-844c-4b5f-8925-a0d80a1dc35e"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
61715
|
1331
|
26
|
2026-04-21T07:09:45.270810+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755385270_m2.jpg...
|
Firefox
|
JY-20701 | Reschedule HubSpot Sync Objects by yalo JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/11989/changes#diff-36d github.com/jiminny/app/pull/11989/changes#diff-36d5a1cf1e0d50f665f647ae3b76748c33ed4a24728b7b73480f430c866b088e...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board 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
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
Close tab
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
New Tab
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (21)
Security and quality
(
21
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
JY-20701 | Reschedule HubSpot Sync Objects #11989 Edit title
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
Edit title
Preview
Preview
Awaiting approval
Awaiting approval
Code
Code
Open
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
Lines changed: 949 additions & 97 deletions
Conversation (5)
Conversation
(
5
)
Commits (22)
Commits
(
22
)
Checks (3)
Checks
(
3
)
Files changed (11)
Files changed
(
11
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
JY-20701 | Reschedule HubSpot Sync Objects
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
All commits
All commits
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
1
/
11
viewed
Awaiting approval
Awaiting approval
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Console
Commands/Crm
Traits
SyncObjectsCommandTrait.php
SyncObjectsCommandTrait.php
SyncHubspotObjects.php
SyncHubspotObjects.php
SyncObjects.php
SyncObjects.php
Kernel.php
Kernel.php
Http/Controllers/Webhook/Hubspot
ProcessesWebhooksTrait.php
ProcessesWebhooksTrait.php
Jobs/Crm
SyncHubspotObjects.php
SyncHubspotObjects.php
SyncObjects.php
SyncObjects.php
Services/Crm/Hubspot/ServiceTraits
OpportunitySyncTrait.php
OpportunitySyncTrait.php
tests/Unit
Collapse file
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
Copy file name to clipboard
Lines changed: 81 additions & 0 deletions
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -0,0 +1,81 @@
1
+
<?php
2
+
3
+
declare
(strict_types=
1
);
4
+
5
+
namespace
Jiminny
\
Console
\
Commands
\
Crm
\
Traits
;
6
+
7
+
use
Jiminny
\
Jobs
\
Job
;
8
+
use
Jiminny
\
Models
\
Team
;
9
+
10
+
trait
SyncObjectsCommandTrait
11
+
{
12
+
abstract
protected
function
getStaggerDelaySeconds
():
float
;
13
+
14
+
abstract
protected
function
getLogPrefix
():
string
;
15
+
16
+
abstract
protected
function
createSyncJob
(
Team
$
team
):
Job
;
17
+
18
+
protected
function
getMaxDelaySeconds
(): ?
int
19
+
{
20
+
return
null
;
21
+
}
22
+
23
+
protected
function
dispatchSyncJobsForTeams
(
iterable
$
teams
):
int
24
+
{
25
+
$
dispatchIndex
=
0
;
26
+
$
maxDelay
=
$
this
->
getMaxDelaySeconds
();
27
+
28
+
foreach
(
$
teams
as
$
team
) {
29
+
$
config
=
$
team
->
getCrmConfiguration
();
30
+
31
+
if
(
$
config
->
getAttribute
(
'
sync_objects
'
) ===
false
) {
32
+
continue
;
33
+
}
34
+
35
+
if
(
$
team
->
getAttribute
(
'
owner_id
'
) ===
null
) {
36
+
$
this
->
error
(
sprintf
(
37
+
'
Team %s (%s) is not yet assigned an owner. skipping...
'
,
38
+
$
team
->
getName
(),
39
+
$
team
->
getUuid
()
40
+
));
41
+
42
+
continue
;
43
+
}
44
+
45
+
if
(
$
config
->
getAttribute
(
'
over_quota_at
'
) ||
$
config
->
getAttribute
(
'
api_disabled_at
'
)) {
46
+
$
this
->
error
(
sprintf
(
47
+
'
Team %s (%s) API unavailable... skipping...
'
,
48
+
$
team
->
getName
(),
49
+
$
team
->
getUuid
()
50
+
));
51
+
52
+
continue
;
53
+
}
54
+
55
+
$
delay
=
$
dispatchIndex
*
$
this
->
getStaggerDelaySeconds
();
56
+
if
(
$
maxDelay
!==
null
) {
57
+...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"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.013297873,"top":0.10614525,"width":0.09524601,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.08344415,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.08294548,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.15791224,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.02144282,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"bounds":{"left":0.0,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.08610372,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.30247405,"width":0.042719416,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.367917,"width":0.1740359,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.3639266,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.38946527,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.40063846,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.42218676,"width":0.07962101,"height":0.032721467},"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.013297873,"top":0.43335995,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.0,"top":0.45490822,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.4660814,"width":0.10721409,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.48922586,"width":0.07413564,"height":0.025538707},"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.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to content","depth":6,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to content","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open menu","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Homepage (g then d)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"jiminny","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"app","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Search or jump to…","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to search","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chat with Copilot","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Open Copilot…","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create new...","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues(g then i)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Pull requests","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Repositories","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"You have unread notifications(g then n)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open user navigation menu","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Repository navigation","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Repository navigation","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pull requests (31)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Agents","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Agents","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Actions","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Wiki","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Wiki","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security and quality (21)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security and quality","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Important update","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Important update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Review this update","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review this update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and manage your preferences in your","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GitHub account settings","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub account settings","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dismiss banner","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"JY-20701 | Reschedule HubSpot Sync Objects #11989 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11989","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit title","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Preview","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Preview","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Awaiting approval","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Awaiting approval","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Code","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"yalokin-jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 22 commits into","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20701-reschedule-HubSpot-processing","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701-reschedule-HubSpot-processing","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 949 additions & 97 deletions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Conversation (5)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Conversation","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Commits (22)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Commits","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"22","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Checks (3)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Files changed (11)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Files changed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Pull Request Toolbar","depth":14,"bounds":{"left":0.090259306,"top":0.07581804,"width":0.0003324468,"height":0.0007980846},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pull Request Toolbar","depth":15,"bounds":{"left":0.090259306,"top":0.07861133,"width":0.030086435,"height":0.08060654},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse file tree","depth":14,"bounds":{"left":0.090259306,"top":0.0650439,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Open","depth":14,"bounds":{"left":0.112865694,"top":0.06943336,"width":0.011968086,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20701 | Reschedule HubSpot Sync Objects","depth":14,"bounds":{"left":0.1314827,"top":0.058260176,"width":0.103390954,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects","depth":16,"bounds":{"left":0.1314827,"top":0.059856344,"width":0.103390954,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"bounds":{"left":0.23753324,"top":0.059856344,"width":0.0028257978,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11989","depth":15,"bounds":{"left":0.24035904,"top":0.059856344,"width":0.012965426,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"All commits","depth":14,"bounds":{"left":0.12882313,"top":0.07182761,"width":0.03374335,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All commits","depth":16,"bounds":{"left":0.13181517,"top":0.07701516,"width":0.02244016,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"yalokin-jiminny","depth":15,"bounds":{"left":0.1668883,"top":0.07581804,"width":0.029920213,"height":0.014365523},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":16,"bounds":{"left":0.1668883,"top":0.07701516,"width":0.029920213,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 22 commits into","depth":15,"bounds":{"left":0.1981383,"top":0.07701516,"width":0.060339097,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"bounds":{"left":0.25980717,"top":0.074221864,"width":0.018284574,"height":0.017557861},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"bounds":{"left":0.26180187,"top":0.07741421,"width":0.014295213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"bounds":{"left":0.27942154,"top":0.07701516,"width":0.00880984,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20701-reschedule-HubSpot-processing","depth":16,"bounds":{"left":0.28956118,"top":0.074221864,"width":0.09507979,"height":0.017557861},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701-reschedule-HubSpot-processing","depth":17,"bounds":{"left":0.29155585,"top":0.07741421,"width":0.091090426,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"bounds":{"left":0.38597074,"top":0.07182761,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":15,"bounds":{"left":0.8216423,"top":0.070231445,"width":0.0018284575,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"bounds":{"left":0.8234708,"top":0.070231445,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":15,"bounds":{"left":0.82696146,"top":0.070231445,"width":0.0038231383,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"viewed","depth":15,"bounds":{"left":0.83194816,"top":0.070231445,"width":0.013131649,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Awaiting approval","depth":14,"bounds":{"left":0.85339093,"top":0.0650439,"width":0.04654255,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Awaiting approval","depth":16,"bounds":{"left":0.8630319,"top":0.070231445,"width":0.033909574,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Submit review","depth":14,"bounds":{"left":0.9025931,"top":0.0650439,"width":0.03856383,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Submit","depth":16,"bounds":{"left":0.9055851,"top":0.070231445,"width":0.014793883,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"review","depth":16,"bounds":{"left":0.920379,"top":0.070231445,"width":0.012466756,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Open diff view settings","depth":14,"bounds":{"left":0.9438165,"top":0.0650439,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open overview panel","depth":14,"bounds":{"left":0.96143615,"top":0.0650439,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open comments panel","depth":14,"bounds":{"left":0.97207445,"top":0.0650439,"width":0.017287234,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"(","depth":16,"bounds":{"left":0.98038566,"top":0.070231445,"width":0.0026595744,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":16,"bounds":{"left":0.9830452,"top":0.070231445,"width":0.0026595744,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":16,"bounds":{"left":0.9857048,"top":0.070231445,"width":0.0014960107,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Filter files…","depth":16,"bounds":{"left":0.1015625,"top":0.11332801,"width":0.06815159,"height":0.023942538},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Filter options","depth":16,"bounds":{"left":0.17270611,"top":0.112529926,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"File tree","depth":15,"bounds":{"left":0.09059176,"top":0.15083799,"width":0.0003324468,"height":0.0007980846},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"File tree","depth":16,"bounds":{"left":0.09059176,"top":0.15363128,"width":0.014295213,"height":0.0518755},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":19,"bounds":{"left":0.1065492,"top":0.15682362,"width":0.008144947,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Console","depth":21,"bounds":{"left":0.10920878,"top":0.18276137,"width":0.017453458,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands/Crm","depth":23,"bounds":{"left":0.11186835,"top":0.20830008,"width":0.03474069,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Traits","depth":25,"bounds":{"left":0.114527926,"top":0.23383878,"width":0.011968086,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncObjectsCommandTrait.php","depth":27,"bounds":{"left":0.1171875,"top":0.25977653,"width":0.068317816,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncObjectsCommandTrait.php","depth":28,"bounds":{"left":0.1171875,"top":0.25977653,"width":0.068317816,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncHubspotObjects.php","depth":25,"bounds":{"left":0.114527926,"top":0.28531525,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncHubspotObjects.php","depth":26,"bounds":{"left":0.114527926,"top":0.28531525,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncObjects.php","depth":25,"bounds":{"left":0.114527926,"top":0.31085396,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncObjects.php","depth":26,"bounds":{"left":0.114527926,"top":0.31085396,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Kernel.php","depth":23,"bounds":{"left":0.11186835,"top":0.33639267,"width":0.023271276,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Kernel.php","depth":24,"bounds":{"left":0.11186835,"top":0.33639267,"width":0.023271276,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Http/Controllers/Webhook/Hubspot","depth":21,"bounds":{"left":0.10920878,"top":0.36193135,"width":0.07579787,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ProcessesWebhooksTrait.php","depth":23,"bounds":{"left":0.11186835,"top":0.38786912,"width":0.06333112,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ProcessesWebhooksTrait.php","depth":24,"bounds":{"left":0.11186835,"top":0.38786912,"width":0.06333112,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jobs/Crm","depth":21,"bounds":{"left":0.10920878,"top":0.41340783,"width":0.020777926,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncHubspotObjects.php","depth":23,"bounds":{"left":0.11186835,"top":0.43894652,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncHubspotObjects.php","depth":24,"bounds":{"left":0.11186835,"top":0.43894652,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncObjects.php","depth":23,"bounds":{"left":0.11186835,"top":0.46448523,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncObjects.php","depth":24,"bounds":{"left":0.11186835,"top":0.46448523,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Services/Crm/Hubspot/ServiceTraits","depth":21,"bounds":{"left":0.10920878,"top":0.49002394,"width":0.0774601,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"OpportunitySyncTrait.php","depth":23,"bounds":{"left":0.11186835,"top":0.51556265,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"OpportunitySyncTrait.php","depth":24,"bounds":{"left":0.11186835,"top":0.51556265,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tests/Unit","depth":19,"bounds":{"left":0.1065492,"top":0.54110134,"width":0.020777926,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy file name to clipboard","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 81 additions & 0 deletions","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Not Viewed","depth":14,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Viewed","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Comment on this file","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"More options","depth":14,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Original file line number","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Original file line","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line number","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line change","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -0,0 +1,81 @@","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"<?php","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"declare","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(strict_types=","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":");","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"namespace","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Console","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Crm","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Traits","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jobs","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Job","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Models","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Team","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"trait","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncObjectsCommandTrait","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"abstract","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"protected","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getStaggerDelaySeconds","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"():","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"float","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"abstract","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"protected","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getLogPrefix","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"():","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"string","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"abstract","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"protected","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"createSyncJob","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Team","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Job","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"protected","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getMaxDelaySeconds","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(): ?","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"int","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"null","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"22","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"23","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"protected","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dispatchSyncJobsForTeams","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"iterable","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"teams","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"int","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"24","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dispatchIndex","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"26","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"maxDelay","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getMaxDelaySeconds","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"();","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"27","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"28","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"foreach","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"teams","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"as","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") {","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"29","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"config","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getCrmConfiguration","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"();","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"config","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getAttribute","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sync_objects","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") ===","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"false","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") {","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"32","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"continue","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"33","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"34","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"35","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getAttribute","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"owner_id","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") ===","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"null","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") {","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"36","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"error","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sprintf","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"37","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Team %s (%s) is not yet assigned an owner. skipping...","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"38","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getName","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(),","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"39","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUuid","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"40","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"));","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"41","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"42","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"continue","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"43","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"44","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"45","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"config","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getAttribute","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"over_quota_at","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") ||","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"config","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getAttribute","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"api_disabled_at","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")) {","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"46","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"error","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sprintf","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"47","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Team %s (%s) API unavailable... skipping...","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"48","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getName","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(),","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"49","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUuid","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"));","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"51","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"52","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"continue","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"53","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"54","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"55","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"delay","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dispatchIndex","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getStaggerDelaySeconds","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"();","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"56","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"maxDelay","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"!==","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"null","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") {","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"57","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8933758096713445712
|
8173320630484165057
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board 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
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
Close tab
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
New Tab
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (21)
Security and quality
(
21
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
JY-20701 | Reschedule HubSpot Sync Objects #11989 Edit title
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
Edit title
Preview
Preview
Awaiting approval
Awaiting approval
Code
Code
Open
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
Lines changed: 949 additions & 97 deletions
Conversation (5)
Conversation
(
5
)
Commits (22)
Commits
(
22
)
Checks (3)
Checks
(
3
)
Files changed (11)
Files changed
(
11
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
JY-20701 | Reschedule HubSpot Sync Objects
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
All commits
All commits
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
1
/
11
viewed
Awaiting approval
Awaiting approval
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Console
Commands/Crm
Traits
SyncObjectsCommandTrait.php
SyncObjectsCommandTrait.php
SyncHubspotObjects.php
SyncHubspotObjects.php
SyncObjects.php
SyncObjects.php
Kernel.php
Kernel.php
Http/Controllers/Webhook/Hubspot
ProcessesWebhooksTrait.php
ProcessesWebhooksTrait.php
Jobs/Crm
SyncHubspotObjects.php
SyncHubspotObjects.php
SyncObjects.php
SyncObjects.php
Services/Crm/Hubspot/ServiceTraits
OpportunitySyncTrait.php
OpportunitySyncTrait.php
tests/Unit
Collapse file
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
Copy file name to clipboard
Lines changed: 81 additions & 0 deletions
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -0,0 +1,81 @@
1
+
<?php
2
+
3
+
declare
(strict_types=
1
);
4
+
5
+
namespace
Jiminny
\
Console
\
Commands
\
Crm
\
Traits
;
6
+
7
+
use
Jiminny
\
Jobs
\
Job
;
8
+
use
Jiminny
\
Models
\
Team
;
9
+
10
+
trait
SyncObjectsCommandTrait
11
+
{
12
+
abstract
protected
function
getStaggerDelaySeconds
():
float
;
13
+
14
+
abstract
protected
function
getLogPrefix
():
string
;
15
+
16
+
abstract
protected
function
createSyncJob
(
Team
$
team
):
Job
;
17
+
18
+
protected
function
getMaxDelaySeconds
(): ?
int
19
+
{
20
+
return
null
;
21
+
}
22
+
23
+
protected
function
dispatchSyncJobsForTeams
(
iterable
$
teams
):
int
24
+
{
25
+
$
dispatchIndex
=
0
;
26
+
$
maxDelay
=
$
this
->
getMaxDelaySeconds
();
27
+
28
+
foreach
(
$
teams
as
$
team
) {
29
+
$
config
=
$
team
->
getCrmConfiguration
();
30
+
31
+
if
(
$
config
->
getAttribute
(
'
sync_objects
'
) ===
false
) {
32
+
continue
;
33
+
}
34
+
35
+
if
(
$
team
->
getAttribute
(
'
owner_id
'
) ===
null
) {
36
+
$
this
->
error
(
sprintf
(
37
+
'
Team %s (%s) is not yet assigned an owner. skipping...
'
,
38
+
$
team
->
getName
(),
39
+
$
team
->
getUuid
()
40
+
));
41
+
42
+
continue
;
43
+
}
44
+
45
+
if
(
$
config
->
getAttribute
(
'
over_quota_at
'
) ||
$
config
->
getAttribute
(
'
api_disabled_at
'
)) {
46
+
$
this
->
error
(
sprintf
(
47
+
'
Team %s (%s) API unavailable... skipping...
'
,
48
+
$
team
->
getName
(),
49
+
$
team
->
getUuid
()
50
+
));
51
+
52
+
continue
;
53
+
}
54
+
55
+
$
delay
=
$
dispatchIndex
*
$
this
->
getStaggerDelaySeconds
();
56
+
if
(
$
maxDelay
!==
null
) {
57
+...
|
NULL
|
|
10965
|
217
|
37
|
2026-04-14T09:06:03.305510+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157563305_m2.jpg...
|
PhpStorm
|
faVsco.js – AskJiminnyReportActivityServiceTest.ph faVsco.js – AskJiminnyReportActivityServiceTest.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
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityServiceTest extends TestCase
{
private ActivitySearch&MockObject $activitySearch;
private ElasticActivityRepository&MockObject $elasticRepository;
private LoggerInterface&MockObject $logger;
private AskJiminnyReportActivityService $service;
protected function setUp(): void
{
$this->activitySearch = $this->createMock(ActivitySearch::class);
$this->elasticRepository = $this->createMock(ElasticActivityRepository::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->service = new AskJiminnyReportActivityService(
$this->activitySearch,
$this->elasticRepository,
$this->logger,
);
}
private function makeFilter(string $key, ?string $value): SearchFilter&MockObject
{
$filter = $this->createMock(SearchFilter::class);
$filter->method('getFilterProperty')->willReturn($key);
$filter->method('getFilterValue')->willReturn($value);
return $filter;
}
private function makeUser(): User&MockObject
{
$tz = new \DateTimeZone('UTC');
$user = $this->createMock(User::class);
$user->method('getTimezone')->willReturn($tz);
$user->method('getId')->willReturn(1);
$user->method('getUuid')->willReturn('user-uuid');
return $user;
}
private function makeSavedSearch(array $filters): Search&MockObject
{
$savedSearch = $this->createMock(Search::class);
$savedSearch->method('getId')->willReturn(42);
$savedSearch->method('getFilters')->willReturn(new \Illuminate\Support\LazyCollection($filters));
return $savedSearch;
}
public function testGetActivityIdsForSavedSearchReturnsIds(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->expects($this->once())
->method('getArrayFilterKeys')
->with($user)
->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->expects($this->once())
->method('onDemandSearchIdsOnly')
->willReturn(['id-1', 'id-2', 'id-3']);
$this->logger->expects($this->once())
->method('info')
->with('[AskJiminnyReport] Fetched activity IDs for saved search');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1', 'id-2', 'id-3'], $result);
}
public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->expects($this->once())->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEmpty($result);
}
public function testGetActivityIdsFiltersOutDateFilters(): void
{
$user = $this->makeUser();
$nonDateFilter = $this->makeFilter('owner_id', '123');
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');
$updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');
$updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');
$savedSearch = $this->makeSavedSearch([
$nonDateFilter,
$startDateFilter,
$endDateFilter,
$updatedFromFilter,
$updatedToFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
}
public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void
{
$user = $this->makeUser();
$closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');
$closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');
$regularFilter = $this->makeFilter('rep_id', '99');
$savedSearch = $this->makeSavedSearch([
$closingStartFilter,
$closingEndFilter,
$regularFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesArrayFilters(): void
{
$user = $this->makeUser();
$filter1 = $this->makeFilter('outcome', 'positive');
$filter2 = $this->makeFilter('outcome', 'negative');
$savedSearch = $this->makeSavedSearch([$filter1, $filter2]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesScalarFilters(): void
{
$user = $this->makeUser();
$filter = $this->makeFilter('direction', 'inbound');
$savedSearch = $this->makeSavedSearch([$filter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-5'], $result);
}
public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
$this->assertFalse($capturedCriteria->isFirstRequest());
}
public function testGetActivityIdsLogsWithCorrectContext(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);
$this->logger->expects($this->once())
->method('info')
->with(
'[AskJiminnyReport] Fetched activity IDs for saved search',
$this->callback(fn ($context) => $context['saved_search_id'] === 42
&& $context['user_id'] === 1
&& $context['activity_count'] === 2)
);
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
15
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Repositories;
use Carbon\CarbonImmutable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
class AutomatedReportsRepository
{
/**
* Create a new automated report
*
* @param array $data
*
* @return AutomatedReport
*/
public function create(array $data): AutomatedReport
{
return AutomatedReport::create($data);
}
/**
* Find an automated report by UUID
*
* @param string $uuid
*
* @return AutomatedReport|null
*/
public function findByUuid(string $uuid): ?AutomatedReport
{
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();
}
public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport
{
if (is_numeric($idOrUuid)) {
return AutomatedReport::find((int) $idOrUuid);
}
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();
}
/**
* Retrieve all standard (non-Ask Jiminny) automated reports.
*
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAllStandardReports(
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->get();
}
/**
* Retrieve all Ask Jiminny reports created by the given user.
*
* @param User $user The user whose reports to retrieve.
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAskJiminnyReportsByUser(
User $user,
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->where('created_by', $user->getId())
->get();
}
private function buildSortedQuery(string $sortColumn, string $sortDirection): \Illuminate\Database\Eloquent\Builder
{
$allowedColumns = ['created_by', 'created_at'];
if (! in_array($sortColumn, $allowedColumns)) {
$sortColumn = 'created_at';
}
$sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';
$query = AutomatedReport::query()->with(['creator', 'team']);
if ($sortColumn === 'created_by') {
$query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')
->orderByRaw("users.name COLLATE utf8mb4_unicode_ci {$sortDirection}")
->select('automated_reports.*');
} else {
$query->orderBy($sortColumn, $sortDirection);
}
return $query;
}
/**
* Get all active and enabled reports with active teams for the specified frequency.
*
* @param string $frequency
*
* @return Collection<AutomatedReport>
*/
public function getActiveReportsByFrequency(string $frequency): Collection
{
return AutomatedReport::where('automated_reports.status', true)
->where('automated_reports.frequency', $frequency)
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->where('teams.status', Team::STATUS_ACTIVE)
->where(function ($query) {
$query->whereNull('automated_reports.expires_at')
->orWhere('automated_reports.expires_at', '>=', now()->toDateString());
})
->select('automated_reports.*')
->get();
}
/**
* Update an automated report
*
* @param AutomatedReport $report
* @param array $data
*
* @return AutomatedReport
*/
public function update(AutomatedReport $report, array $data): AutomatedReport
{
$report->update($data);
return $report;
}
/**
* Create a new automated report result.
*
* @param array $data The data to create the automated report result with.
*
* @return AutomatedReportResult The newly created automated report result.
*/
public function createResult(array $data): AutomatedReportResult
{
return AutomatedReportResult::create($data);
}
/**
* Find an automated report result by UUID.
*
* @param string $uuid The UUID to find the automated report result with.
*
* @return AutomatedReportResult|null The automated report result if found, otherwise null.
*/
public function findResultByUuid(string $uuid): ?AutomatedReportResult
{
return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();
}
public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('uuid', AutomatedReportResult::toOptimized($uuid))
->whereHas('report', static function ($query) use ($user): void {
$query->where('team_id', $user->getTeamId())
->where('created_by', $user->getId());
})
->first();
}
public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('parent_id', $result->getId())
->where('media_type', $type)
->first();
}
public function getGeneratedNotSentResults(): Collection
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNull('sent_at')
->where('status', AutomatedReportResult::STATUS_GENERATED)
->whereHas('report')
->with('report')
->get();
}
public function getPaginatedUserReports(
User $user,
ReportSort $sort,
ReportSortDirection $sortDirection,
int $resultsPerPage,
int $page,
?Carbon $fromDate,
?Carbon $toDate,
array $teamIds,
array $reportTypes,
?string $name,
): LengthAwarePaginator {
$query = AutomatedReportResult::query()
->whereNotNull('automated_report_results.generated_at')
->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')
->where('automated_reports.team_id', $user->getTeamId())
->whereJsonContains('automated_reports.recipients->users', $user->getId())
->orderByRaw("$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}")
->select('automated_report_results.*')
->with('report.team');
if ($fromDate !== null && $toDate !== null) {
$query->whereBetween('generated_at', [$fromDate, $toDate]);
}
if (! empty($teamIds)) {
$query->where(function ($q) use ($teamIds) {
foreach ($teamIds as $id) {
$q->orWhereJsonContains('automated_reports.groups', $id);
}
});
}
if (! empty($reportTypes)) {
$query->whereIn('automated_reports.type', $reportTypes);
}
if (! empty($name)) {
$query->whereLike('name', "%$name%");
}
return $query->paginate($resultsPerPage, ['*'], 'page', $page);
}
public function countUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNotNull('sent_at')
->whereHas('report', function ($q) use ($user) {
$q->where('team_id', $user->getTeamId())
->whereJsonContains('recipients->users', $user->getId());
})
->count();
}
/**
* Get report IDs for a specific team
*
* @param Team $team
*
* @return \Illuminate\Support\Collection
*/
public function getReportIdsByTeam(Team $team): \Illuminate\Support\Collection
{
return AutomatedReport::where('team_id', $team->getId())->pluck('id');
}
/**
* Get all reports for a specific team
*
* @param Team $team
*
* @return Collection
*/
public function getReportsByTeam(Team $team): Collection
{
return AutomatedReport::where('team_id', $team->getId())->get();
}
/**
* Get all report results for a specific report
*
* @param AutomatedReport $report
*
* @return Collection
*/
public function getResultsByReport(AutomatedReport $report): Collection
{
return $this->getResultsByReportQuery($report)->get();
}
public function getResultsByReportQuery(AutomatedReport $report): Builder
{
return AutomatedReportResult::where('report_id', $report->getId());
}
public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder
{
$reportIds = $this->getReportIdsByTeam($team);
return AutomatedReportResult::query()->whereIn('report_id', $reportIds)
->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);
}
/**
* @param int|null $teamId Optional team ID to filter results
*
* @return \Illuminate\Support\Collection<int, int> Collection of team IDs
*/
public function getTeamIdsWithReportsResults(?int $teamId = null): \Illuminate\Support\Collection
{
$query = DB::table('automated_reports')
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->select('teams.id')
->distinct();
if ($teamId !== null) {
$query->where('teams.id', $teamId);
}
return $query->pluck('teams.id');
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"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.76171875,"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":"RequestGenerateAskJiminnyReportJobTest","depth":6,"bounds":{"left":0.7796875,"top":0.017361112,"width":0.12109375,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'RequestGenerateAskJiminnyReportJobTest'","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 'RequestGenerateAskJiminnyReportJobTest'","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.23320313,"top":1.0,"width":0.009375,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.009375,"height":0.0},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.00859375,"height":0.0},"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.23320313,"top":1.0,"width":0.008203125,"height":0.0},"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 Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AskJiminnyReportActivityService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse PHPUnit\\Framework\\TestCase;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityServiceTest extends TestCase\n{\n private ActivitySearch&MockObject $activitySearch;\n private ElasticActivityRepository&MockObject $elasticRepository;\n private LoggerInterface&MockObject $logger;\n private AskJiminnyReportActivityService $service;\n\n protected function setUp(): void\n {\n $this->activitySearch = $this->createMock(ActivitySearch::class);\n $this->elasticRepository = $this->createMock(ElasticActivityRepository::class);\n $this->logger = $this->createMock(LoggerInterface::class);\n\n $this->service = new AskJiminnyReportActivityService(\n $this->activitySearch,\n $this->elasticRepository,\n $this->logger,\n );\n }\n\n private function makeFilter(string $key, ?string $value): SearchFilter&MockObject\n {\n $filter = $this->createMock(SearchFilter::class);\n $filter->method('getFilterProperty')->willReturn($key);\n $filter->method('getFilterValue')->willReturn($value);\n\n return $filter;\n }\n\n private function makeUser(): User&MockObject\n {\n $tz = new \\DateTimeZone('UTC');\n $user = $this->createMock(User::class);\n $user->method('getTimezone')->willReturn($tz);\n $user->method('getId')->willReturn(1);\n $user->method('getUuid')->willReturn('user-uuid');\n\n return $user;\n }\n\n private function makeSavedSearch(array $filters): Search&MockObject\n {\n $savedSearch = $this->createMock(Search::class);\n $savedSearch->method('getId')->willReturn(42);\n $savedSearch->method('getFilters')->willReturn(new \\Illuminate\\Support\\LazyCollection($filters));\n\n return $savedSearch;\n }\n\n public function testGetActivityIdsForSavedSearchReturnsIds(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->expects($this->once())\n ->method('getArrayFilterKeys')\n ->with($user)\n ->willReturn([]);\n\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n\n $this->elasticRepository->expects($this->once())\n ->method('onDemandSearchIdsOnly')\n ->willReturn(['id-1', 'id-2', 'id-3']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with('[AskJiminnyReport] Fetched activity IDs for saved search');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1', 'id-2', 'id-3'], $result);\n }\n\n public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $this->logger->expects($this->once())->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEmpty($result);\n }\n\n public function testGetActivityIdsFiltersOutDateFilters(): void\n {\n $user = $this->makeUser();\n\n $nonDateFilter = $this->makeFilter('owner_id', '123');\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');\n $updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');\n $updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');\n\n $savedSearch = $this->makeSavedSearch([\n $nonDateFilter,\n $startDateFilter,\n $endDateFilter,\n $updatedFromFilter,\n $updatedToFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n }\n\n public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void\n {\n $user = $this->makeUser();\n\n $closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');\n $closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');\n $regularFilter = $this->makeFilter('rep_id', '99');\n\n $savedSearch = $this->makeSavedSearch([\n $closingStartFilter,\n $closingEndFilter,\n $regularFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesArrayFilters(): void\n {\n $user = $this->makeUser();\n\n $filter1 = $this->makeFilter('outcome', 'positive');\n $filter2 = $this->makeFilter('outcome', 'negative');\n\n $savedSearch = $this->makeSavedSearch([$filter1, $filter2]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesScalarFilters(): void\n {\n $user = $this->makeUser();\n\n $filter = $this->makeFilter('direction', 'inbound');\n $savedSearch = $this->makeSavedSearch([$filter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-5'], $result);\n }\n\n public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertFalse($capturedCriteria->isFirstRequest());\n }\n\n public function testGetActivityIdsLogsWithCorrectContext(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with(\n '[AskJiminnyReport] Fetched activity IDs for saved search',\n $this->callback(fn ($context) => $context['saved_search_id'] === 42\n && $context['user_id'] === 1\n && $context['activity_count'] === 2)\n );\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n }\n}","depth":4,"bounds":{"left":0.490625,"top":0.12777779,"width":0.3347656,"height":0.8722222},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AskJiminnyReportActivityService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse PHPUnit\\Framework\\TestCase;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityServiceTest extends TestCase\n{\n private ActivitySearch&MockObject $activitySearch;\n private ElasticActivityRepository&MockObject $elasticRepository;\n private LoggerInterface&MockObject $logger;\n private AskJiminnyReportActivityService $service;\n\n protected function setUp(): void\n {\n $this->activitySearch = $this->createMock(ActivitySearch::class);\n $this->elasticRepository = $this->createMock(ElasticActivityRepository::class);\n $this->logger = $this->createMock(LoggerInterface::class);\n\n $this->service = new AskJiminnyReportActivityService(\n $this->activitySearch,\n $this->elasticRepository,\n $this->logger,\n );\n }\n\n private function makeFilter(string $key, ?string $value): SearchFilter&MockObject\n {\n $filter = $this->createMock(SearchFilter::class);\n $filter->method('getFilterProperty')->willReturn($key);\n $filter->method('getFilterValue')->willReturn($value);\n\n return $filter;\n }\n\n private function makeUser(): User&MockObject\n {\n $tz = new \\DateTimeZone('UTC');\n $user = $this->createMock(User::class);\n $user->method('getTimezone')->willReturn($tz);\n $user->method('getId')->willReturn(1);\n $user->method('getUuid')->willReturn('user-uuid');\n\n return $user;\n }\n\n private function makeSavedSearch(array $filters): Search&MockObject\n {\n $savedSearch = $this->createMock(Search::class);\n $savedSearch->method('getId')->willReturn(42);\n $savedSearch->method('getFilters')->willReturn(new \\Illuminate\\Support\\LazyCollection($filters));\n\n return $savedSearch;\n }\n\n public function testGetActivityIdsForSavedSearchReturnsIds(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->expects($this->once())\n ->method('getArrayFilterKeys')\n ->with($user)\n ->willReturn([]);\n\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n\n $this->elasticRepository->expects($this->once())\n ->method('onDemandSearchIdsOnly')\n ->willReturn(['id-1', 'id-2', 'id-3']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with('[AskJiminnyReport] Fetched activity IDs for saved search');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1', 'id-2', 'id-3'], $result);\n }\n\n public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $this->logger->expects($this->once())->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEmpty($result);\n }\n\n public function testGetActivityIdsFiltersOutDateFilters(): void\n {\n $user = $this->makeUser();\n\n $nonDateFilter = $this->makeFilter('owner_id', '123');\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');\n $updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');\n $updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');\n\n $savedSearch = $this->makeSavedSearch([\n $nonDateFilter,\n $startDateFilter,\n $endDateFilter,\n $updatedFromFilter,\n $updatedToFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n }\n\n public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void\n {\n $user = $this->makeUser();\n\n $closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');\n $closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');\n $regularFilter = $this->makeFilter('rep_id', '99');\n\n $savedSearch = $this->makeSavedSearch([\n $closingStartFilter,\n $closingEndFilter,\n $regularFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesArrayFilters(): void\n {\n $user = $this->makeUser();\n\n $filter1 = $this->makeFilter('outcome', 'positive');\n $filter2 = $this->makeFilter('outcome', 'negative');\n\n $savedSearch = $this->makeSavedSearch([$filter1, $filter2]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesScalarFilters(): void\n {\n $user = $this->makeUser();\n\n $filter = $this->makeFilter('direction', 'inbound');\n $savedSearch = $this->makeSavedSearch([$filter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-5'], $result);\n }\n\n public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertFalse($capturedCriteria->isFirstRequest());\n }\n\n public function testGetActivityIdsLogsWithCorrectContext(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with(\n '[AskJiminnyReport] Fetched activity IDs for saved search',\n $this->callback(fn ($context) => $context['saved_search_id'] === 42\n && $context['user_id'] === 1\n && $context['activity_count'] === 2)\n );\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n }\n}","role_description":"text entry area","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":"15","depth":4,"bounds":{"left":0.4234375,"top":0.1736111,"width":0.011328125,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.43710938,"top":0.1736111,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.4484375,"top":0.17222223,"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.45703125,"top":0.17222223,"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\\Repositories;\n\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Pagination\\LengthAwarePaginator;\nuse Illuminate\\Support\\Facades\\DB;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSort;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSortDirection;\n\nclass AutomatedReportsRepository\n{\n /**\n * Create a new automated report\n *\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function create(array $data): AutomatedReport\n {\n return AutomatedReport::create($data);\n }\n\n /**\n * Find an automated report by UUID\n *\n * @param string $uuid\n *\n * @return AutomatedReport|null\n */\n public function findByUuid(string $uuid): ?AutomatedReport\n {\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();\n }\n\n public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport\n {\n if (is_numeric($idOrUuid)) {\n return AutomatedReport::find((int) $idOrUuid);\n }\n\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();\n }\n\n /**\n * Retrieve all standard (non-Ask Jiminny) automated reports.\n *\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAllStandardReports(\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->get();\n }\n\n /**\n * Retrieve all Ask Jiminny reports created by the given user.\n *\n * @param User $user The user whose reports to retrieve.\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAskJiminnyReportsByUser(\n User $user,\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->where('created_by', $user->getId())\n ->get();\n }\n\n private function buildSortedQuery(string $sortColumn, string $sortDirection): \\Illuminate\\Database\\Eloquent\\Builder\n {\n $allowedColumns = ['created_by', 'created_at'];\n if (! in_array($sortColumn, $allowedColumns)) {\n $sortColumn = 'created_at';\n }\n\n $sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';\n\n $query = AutomatedReport::query()->with(['creator', 'team']);\n\n if ($sortColumn === 'created_by') {\n $query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')\n ->orderByRaw(\"users.name COLLATE utf8mb4_unicode_ci {$sortDirection}\")\n ->select('automated_reports.*');\n } else {\n $query->orderBy($sortColumn, $sortDirection);\n }\n\n return $query;\n }\n\n /**\n * Get all active and enabled reports with active teams for the specified frequency.\n *\n * @param string $frequency\n *\n * @return Collection<AutomatedReport>\n */\n public function getActiveReportsByFrequency(string $frequency): Collection\n {\n return AutomatedReport::where('automated_reports.status', true)\n ->where('automated_reports.frequency', $frequency)\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->where('teams.status', Team::STATUS_ACTIVE)\n ->where(function ($query) {\n $query->whereNull('automated_reports.expires_at')\n ->orWhere('automated_reports.expires_at', '>=', now()->toDateString());\n })\n ->select('automated_reports.*')\n ->get();\n }\n\n /**\n * Update an automated report\n *\n * @param AutomatedReport $report\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function update(AutomatedReport $report, array $data): AutomatedReport\n {\n $report->update($data);\n\n return $report;\n }\n\n /**\n * Create a new automated report result.\n *\n * @param array $data The data to create the automated report result with.\n *\n * @return AutomatedReportResult The newly created automated report result.\n */\n public function createResult(array $data): AutomatedReportResult\n {\n return AutomatedReportResult::create($data);\n }\n\n /**\n * Find an automated report result by UUID.\n *\n * @param string $uuid The UUID to find the automated report result with.\n *\n * @return AutomatedReportResult|null The automated report result if found, otherwise null.\n */\n public function findResultByUuid(string $uuid): ?AutomatedReportResult\n {\n return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();\n }\n\n public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('uuid', AutomatedReportResult::toOptimized($uuid))\n ->whereHas('report', static function ($query) use ($user): void {\n $query->where('team_id', $user->getTeamId())\n ->where('created_by', $user->getId());\n })\n ->first();\n }\n\n public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('parent_id', $result->getId())\n ->where('media_type', $type)\n ->first();\n }\n\n public function getGeneratedNotSentResults(): Collection\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNull('sent_at')\n ->where('status', AutomatedReportResult::STATUS_GENERATED)\n ->whereHas('report')\n ->with('report')\n ->get();\n }\n\n public function getPaginatedUserReports(\n User $user,\n ReportSort $sort,\n ReportSortDirection $sortDirection,\n int $resultsPerPage,\n int $page,\n ?Carbon $fromDate,\n ?Carbon $toDate,\n array $teamIds,\n array $reportTypes,\n ?string $name,\n ): LengthAwarePaginator {\n $query = AutomatedReportResult::query()\n ->whereNotNull('automated_report_results.generated_at')\n ->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')\n ->where('automated_reports.team_id', $user->getTeamId())\n ->whereJsonContains('automated_reports.recipients->users', $user->getId())\n ->orderByRaw(\"$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}\")\n ->select('automated_report_results.*')\n ->with('report.team');\n\n if ($fromDate !== null && $toDate !== null) {\n $query->whereBetween('generated_at', [$fromDate, $toDate]);\n }\n\n if (! empty($teamIds)) {\n $query->where(function ($q) use ($teamIds) {\n foreach ($teamIds as $id) {\n $q->orWhereJsonContains('automated_reports.groups', $id);\n }\n });\n }\n\n if (! empty($reportTypes)) {\n $query->whereIn('automated_reports.type', $reportTypes);\n }\n\n if (! empty($name)) {\n $query->whereLike('name', \"%$name%\");\n }\n\n return $query->paginate($resultsPerPage, ['*'], 'page', $page);\n }\n\n public function countUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNotNull('sent_at')\n ->whereHas('report', function ($q) use ($user) {\n $q->where('team_id', $user->getTeamId())\n ->whereJsonContains('recipients->users', $user->getId());\n })\n ->count();\n }\n\n /**\n * Get report IDs for a specific team\n *\n * @param Team $team\n *\n * @return \\Illuminate\\Support\\Collection\n */\n public function getReportIdsByTeam(Team $team): \\Illuminate\\Support\\Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->pluck('id');\n }\n\n /**\n * Get all reports for a specific team\n *\n * @param Team $team\n *\n * @return Collection\n */\n public function getReportsByTeam(Team $team): Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->get();\n }\n\n /**\n * Get all report results for a specific report\n *\n * @param AutomatedReport $report\n *\n * @return Collection\n */\n public function getResultsByReport(AutomatedReport $report): Collection\n {\n return $this->getResultsByReportQuery($report)->get();\n }\n\n public function getResultsByReportQuery(AutomatedReport $report): Builder\n {\n return AutomatedReportResult::where('report_id', $report->getId());\n }\n\n public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder\n {\n $reportIds = $this->getReportIdsByTeam($team);\n\n return AutomatedReportResult::query()->whereIn('report_id', $reportIds)\n ->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);\n }\n\n /**\n * @param int|null $teamId Optional team ID to filter results\n *\n * @return \\Illuminate\\Support\\Collection<int, int> Collection of team IDs\n */\n public function getTeamIdsWithReportsResults(?int $teamId = null): \\Illuminate\\Support\\Collection\n {\n $query = DB::table('automated_reports')\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->select('teams.id')\n ->distinct();\n\n if ($teamId !== null) {\n $query->where('teams.id', $teamId);\n }\n\n return $query->pluck('teams.id');\n }\n}","depth":4,"bounds":{"left":0.15234375,"top":0.0,"width":0.39882812,"height":1.0},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Repositories;\n\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Pagination\\LengthAwarePaginator;\nuse Illuminate\\Support\\Facades\\DB;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSort;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSortDirection;\n\nclass AutomatedReportsRepository\n{\n /**\n * Create a new automated report\n *\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function create(array $data): AutomatedReport\n {\n return AutomatedReport::create($data);\n }\n\n /**\n * Find an automated report by UUID\n *\n * @param string $uuid\n *\n * @return AutomatedReport|null\n */\n public function findByUuid(string $uuid): ?AutomatedReport\n {\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();\n }\n\n public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport\n {\n if (is_numeric($idOrUuid)) {\n return AutomatedReport::find((int) $idOrUuid);\n }\n\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();\n }\n\n /**\n * Retrieve all standard (non-Ask Jiminny) automated reports.\n *\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAllStandardReports(\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->get();\n }\n\n /**\n * Retrieve all Ask Jiminny reports created by the given user.\n *\n * @param User $user The user whose reports to retrieve.\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAskJiminnyReportsByUser(\n User $user,\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->where('created_by', $user->getId())\n ->get();\n }\n\n private function buildSortedQuery(string $sortColumn, string $sortDirection): \\Illuminate\\Database\\Eloquent\\Builder\n {\n $allowedColumns = ['created_by', 'created_at'];\n if (! in_array($sortColumn, $allowedColumns)) {\n $sortColumn = 'created_at';\n }\n\n $sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';\n\n $query = AutomatedReport::query()->with(['creator', 'team']);\n\n if ($sortColumn === 'created_by') {\n $query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')\n ->orderByRaw(\"users.name COLLATE utf8mb4_unicode_ci {$sortDirection}\")\n ->select('automated_reports.*');\n } else {\n $query->orderBy($sortColumn, $sortDirection);\n }\n\n return $query;\n }\n\n /**\n * Get all active and enabled reports with active teams for the specified frequency.\n *\n * @param string $frequency\n *\n * @return Collection<AutomatedReport>\n */\n public function getActiveReportsByFrequency(string $frequency): Collection\n {\n return AutomatedReport::where('automated_reports.status', true)\n ->where('automated_reports.frequency', $frequency)\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->where('teams.status', Team::STATUS_ACTIVE)\n ->where(function ($query) {\n $query->whereNull('automated_reports.expires_at')\n ->orWhere('automated_reports.expires_at', '>=', now()->toDateString());\n })\n ->select('automated_reports.*')\n ->get();\n }\n\n /**\n * Update an automated report\n *\n * @param AutomatedReport $report\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function update(AutomatedReport $report, array $data): AutomatedReport\n {\n $report->update($data);\n\n return $report;\n }\n\n /**\n * Create a new automated report result.\n *\n * @param array $data The data to create the automated report result with.\n *\n * @return AutomatedReportResult The newly created automated report result.\n */\n public function createResult(array $data): AutomatedReportResult\n {\n return AutomatedReportResult::create($data);\n }\n\n /**\n * Find an automated report result by UUID.\n *\n * @param string $uuid The UUID to find the automated report result with.\n *\n * @return AutomatedReportResult|null The automated report result if found, otherwise null.\n */\n public function findResultByUuid(string $uuid): ?AutomatedReportResult\n {\n return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();\n }\n\n public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('uuid', AutomatedReportResult::toOptimized($uuid))\n ->whereHas('report', static function ($query) use ($user): void {\n $query->where('team_id', $user->getTeamId())\n ->where('created_by', $user->getId());\n })\n ->first();\n }\n\n public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('parent_id', $result->getId())\n ->where('media_type', $type)\n ->first();\n }\n\n public function getGeneratedNotSentResults(): Collection\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNull('sent_at')\n ->where('status', AutomatedReportResult::STATUS_GENERATED)\n ->whereHas('report')\n ->with('report')\n ->get();\n }\n\n public function getPaginatedUserReports(\n User $user,\n ReportSort $sort,\n ReportSortDirection $sortDirection,\n int $resultsPerPage,\n int $page,\n ?Carbon $fromDate,\n ?Carbon $toDate,\n array $teamIds,\n array $reportTypes,\n ?string $name,\n ): LengthAwarePaginator {\n $query = AutomatedReportResult::query()\n ->whereNotNull('automated_report_results.generated_at')\n ->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')\n ->where('automated_reports.team_id', $user->getTeamId())\n ->whereJsonContains('automated_reports.recipients->users', $user->getId())\n ->orderByRaw(\"$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}\")\n ->select('automated_report_results.*')\n ->with('report.team');\n\n if ($fromDate !== null && $toDate !== null) {\n $query->whereBetween('generated_at', [$fromDate, $toDate]);\n }\n\n if (! empty($teamIds)) {\n $query->where(function ($q) use ($teamIds) {\n foreach ($teamIds as $id) {\n $q->orWhereJsonContains('automated_reports.groups', $id);\n }\n });\n }\n\n if (! empty($reportTypes)) {\n $query->whereIn('automated_reports.type', $reportTypes);\n }\n\n if (! empty($name)) {\n $query->whereLike('name', \"%$name%\");\n }\n\n return $query->paginate($resultsPerPage, ['*'], 'page', $page);\n }\n\n public function countUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNotNull('sent_at')\n ->whereHas('report', function ($q) use ($user) {\n $q->where('team_id', $user->getTeamId())\n ->whereJsonContains('recipients->users', $user->getId());\n })\n ->count();\n }\n\n /**\n * Get report IDs for a specific team\n *\n * @param Team $team\n *\n * @return \\Illuminate\\Support\\Collection\n */\n public function getReportIdsByTeam(Team $team): \\Illuminate\\Support\\Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->pluck('id');\n }\n\n /**\n * Get all reports for a specific team\n *\n * @param Team $team\n *\n * @return Collection\n */\n public function getReportsByTeam(Team $team): Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->get();\n }\n\n /**\n * Get all report results for a specific report\n *\n * @param AutomatedReport $report\n *\n * @return Collection\n */\n public function getResultsByReport(AutomatedReport $report): Collection\n {\n return $this->getResultsByReportQuery($report)->get();\n }\n\n public function getResultsByReportQuery(AutomatedReport $report): Builder\n {\n return AutomatedReportResult::where('report_id', $report->getId());\n }\n\n public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder\n {\n $reportIds = $this->getReportIdsByTeam($team);\n\n return AutomatedReportResult::query()->whereIn('report_id', $reportIds)\n ->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);\n }\n\n /**\n * @param int|null $teamId Optional team ID to filter results\n *\n * @return \\Illuminate\\Support\\Collection<int, int> Collection of team IDs\n */\n public function getTeamIdsWithReportsResults(?int $teamId = null): \\Illuminate\\Support\\Collection\n {\n $query = DB::table('automated_reports')\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->select('teams.id')\n ->distinct();\n\n if ($teamId !== null) {\n $query->where('teams.id', $teamId);\n }\n\n return $query->pluck('teams.id');\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.0140625,"top":0.041666668,"width":0.028515626,"height":0.021527778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","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":"AXButton","text":"Expand Selected","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":"AXButton","text":"Collapse All","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":"AXButton","text":"Options","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":"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}]...
|
8932460332387265586
|
-8276790037575160524
|
visual_change
|
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
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityServiceTest extends TestCase
{
private ActivitySearch&MockObject $activitySearch;
private ElasticActivityRepository&MockObject $elasticRepository;
private LoggerInterface&MockObject $logger;
private AskJiminnyReportActivityService $service;
protected function setUp(): void
{
$this->activitySearch = $this->createMock(ActivitySearch::class);
$this->elasticRepository = $this->createMock(ElasticActivityRepository::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->service = new AskJiminnyReportActivityService(
$this->activitySearch,
$this->elasticRepository,
$this->logger,
);
}
private function makeFilter(string $key, ?string $value): SearchFilter&MockObject
{
$filter = $this->createMock(SearchFilter::class);
$filter->method('getFilterProperty')->willReturn($key);
$filter->method('getFilterValue')->willReturn($value);
return $filter;
}
private function makeUser(): User&MockObject
{
$tz = new \DateTimeZone('UTC');
$user = $this->createMock(User::class);
$user->method('getTimezone')->willReturn($tz);
$user->method('getId')->willReturn(1);
$user->method('getUuid')->willReturn('user-uuid');
return $user;
}
private function makeSavedSearch(array $filters): Search&MockObject
{
$savedSearch = $this->createMock(Search::class);
$savedSearch->method('getId')->willReturn(42);
$savedSearch->method('getFilters')->willReturn(new \Illuminate\Support\LazyCollection($filters));
return $savedSearch;
}
public function testGetActivityIdsForSavedSearchReturnsIds(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->expects($this->once())
->method('getArrayFilterKeys')
->with($user)
->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->expects($this->once())
->method('onDemandSearchIdsOnly')
->willReturn(['id-1', 'id-2', 'id-3']);
$this->logger->expects($this->once())
->method('info')
->with('[AskJiminnyReport] Fetched activity IDs for saved search');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1', 'id-2', 'id-3'], $result);
}
public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->expects($this->once())->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEmpty($result);
}
public function testGetActivityIdsFiltersOutDateFilters(): void
{
$user = $this->makeUser();
$nonDateFilter = $this->makeFilter('owner_id', '123');
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');
$updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');
$updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');
$savedSearch = $this->makeSavedSearch([
$nonDateFilter,
$startDateFilter,
$endDateFilter,
$updatedFromFilter,
$updatedToFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
}
public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void
{
$user = $this->makeUser();
$closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');
$closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');
$regularFilter = $this->makeFilter('rep_id', '99');
$savedSearch = $this->makeSavedSearch([
$closingStartFilter,
$closingEndFilter,
$regularFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesArrayFilters(): void
{
$user = $this->makeUser();
$filter1 = $this->makeFilter('outcome', 'positive');
$filter2 = $this->makeFilter('outcome', 'negative');
$savedSearch = $this->makeSavedSearch([$filter1, $filter2]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesScalarFilters(): void
{
$user = $this->makeUser();
$filter = $this->makeFilter('direction', 'inbound');
$savedSearch = $this->makeSavedSearch([$filter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-5'], $result);
}
public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
$this->assertFalse($capturedCriteria->isFirstRequest());
}
public function testGetActivityIdsLogsWithCorrectContext(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);
$this->logger->expects($this->once())
->method('info')
->with(
'[AskJiminnyReport] Fetched activity IDs for saved search',
$this->callback(fn ($context) => $context['saved_search_id'] === 42
&& $context['user_id'] === 1
&& $context['activity_count'] === 2)
);
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
15
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Repositories;
use Carbon\CarbonImmutable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
class AutomatedReportsRepository
{
/**
* Create a new automated report
*
* @param array $data
*
* @return AutomatedReport
*/
public function create(array $data): AutomatedReport
{
return AutomatedReport::create($data);
}
/**
* Find an automated report by UUID
*
* @param string $uuid
*
* @return AutomatedReport|null
*/
public function findByUuid(string $uuid): ?AutomatedReport
{
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();
}
public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport
{
if (is_numeric($idOrUuid)) {
return AutomatedReport::find((int) $idOrUuid);
}
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();
}
/**
* Retrieve all standard (non-Ask Jiminny) automated reports.
*
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAllStandardReports(
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->get();
}
/**
* Retrieve all Ask Jiminny reports created by the given user.
*
* @param User $user The user whose reports to retrieve.
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAskJiminnyReportsByUser(
User $user,
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->where('created_by', $user->getId())
->get();
}
private function buildSortedQuery(string $sortColumn, string $sortDirection): \Illuminate\Database\Eloquent\Builder
{
$allowedColumns = ['created_by', 'created_at'];
if (! in_array($sortColumn, $allowedColumns)) {
$sortColumn = 'created_at';
}
$sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';
$query = AutomatedReport::query()->with(['creator', 'team']);
if ($sortColumn === 'created_by') {
$query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')
->orderByRaw("users.name COLLATE utf8mb4_unicode_ci {$sortDirection}")
->select('automated_reports.*');
} else {
$query->orderBy($sortColumn, $sortDirection);
}
return $query;
}
/**
* Get all active and enabled reports with active teams for the specified frequency.
*
* @param string $frequency
*
* @return Collection<AutomatedReport>
*/
public function getActiveReportsByFrequency(string $frequency): Collection
{
return AutomatedReport::where('automated_reports.status', true)
->where('automated_reports.frequency', $frequency)
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->where('teams.status', Team::STATUS_ACTIVE)
->where(function ($query) {
$query->whereNull('automated_reports.expires_at')
->orWhere('automated_reports.expires_at', '>=', now()->toDateString());
})
->select('automated_reports.*')
->get();
}
/**
* Update an automated report
*
* @param AutomatedReport $report
* @param array $data
*
* @return AutomatedReport
*/
public function update(AutomatedReport $report, array $data): AutomatedReport
{
$report->update($data);
return $report;
}
/**
* Create a new automated report result.
*
* @param array $data The data to create the automated report result with.
*
* @return AutomatedReportResult The newly created automated report result.
*/
public function createResult(array $data): AutomatedReportResult
{
return AutomatedReportResult::create($data);
}
/**
* Find an automated report result by UUID.
*
* @param string $uuid The UUID to find the automated report result with.
*
* @return AutomatedReportResult|null The automated report result if found, otherwise null.
*/
public function findResultByUuid(string $uuid): ?AutomatedReportResult
{
return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();
}
public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('uuid', AutomatedReportResult::toOptimized($uuid))
->whereHas('report', static function ($query) use ($user): void {
$query->where('team_id', $user->getTeamId())
->where('created_by', $user->getId());
})
->first();
}
public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('parent_id', $result->getId())
->where('media_type', $type)
->first();
}
public function getGeneratedNotSentResults(): Collection
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNull('sent_at')
->where('status', AutomatedReportResult::STATUS_GENERATED)
->whereHas('report')
->with('report')
->get();
}
public function getPaginatedUserReports(
User $user,
ReportSort $sort,
ReportSortDirection $sortDirection,
int $resultsPerPage,
int $page,
?Carbon $fromDate,
?Carbon $toDate,
array $teamIds,
array $reportTypes,
?string $name,
): LengthAwarePaginator {
$query = AutomatedReportResult::query()
->whereNotNull('automated_report_results.generated_at')
->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')
->where('automated_reports.team_id', $user->getTeamId())
->whereJsonContains('automated_reports.recipients->users', $user->getId())
->orderByRaw("$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}")
->select('automated_report_results.*')
->with('report.team');
if ($fromDate !== null && $toDate !== null) {
$query->whereBetween('generated_at', [$fromDate, $toDate]);
}
if (! empty($teamIds)) {
$query->where(function ($q) use ($teamIds) {
foreach ($teamIds as $id) {
$q->orWhereJsonContains('automated_reports.groups', $id);
}
});
}
if (! empty($reportTypes)) {
$query->whereIn('automated_reports.type', $reportTypes);
}
if (! empty($name)) {
$query->whereLike('name', "%$name%");
}
return $query->paginate($resultsPerPage, ['*'], 'page', $page);
}
public function countUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNotNull('sent_at')
->whereHas('report', function ($q) use ($user) {
$q->where('team_id', $user->getTeamId())
->whereJsonContains('recipients->users', $user->getId());
})
->count();
}
/**
* Get report IDs for a specific team
*
* @param Team $team
*
* @return \Illuminate\Support\Collection
*/
public function getReportIdsByTeam(Team $team): \Illuminate\Support\Collection
{
return AutomatedReport::where('team_id', $team->getId())->pluck('id');
}
/**
* Get all reports for a specific team
*
* @param Team $team
*
* @return Collection
*/
public function getReportsByTeam(Team $team): Collection
{
return AutomatedReport::where('team_id', $team->getId())->get();
}
/**
* Get all report results for a specific report
*
* @param AutomatedReport $report
*
* @return Collection
*/
public function getResultsByReport(AutomatedReport $report): Collection
{
return $this->getResultsByReportQuery($report)->get();
}
public function getResultsByReportQuery(AutomatedReport $report): Builder
{
return AutomatedReportResult::where('report_id', $report->getId());
}
public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder
{
$reportIds = $this->getReportIdsByTeam($team);
return AutomatedReportResult::query()->whereIn('report_id', $reportIds)
->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);
}
/**
* @param int|null $teamId Optional team ID to filter results
*
* @return \Illuminate\Support\Collection<int, int> Collection of team IDs
*/
public function getTeamIdsWithReportsResults(?int $teamId = null): \Illuminate\Support\Collection
{
$query = DB::table('automated_reports')
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->select('teams.id')
->distinct();
if ($teamId !== null) {
$query->where('teams.id', $teamId);
}
return $query->pluck('teams.id');
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
10964
|
|
10966
|
216
|
19
|
2026-04-14T09:06:04.397941+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157564397_m1.jpg...
|
PhpStorm
|
faVsco.js – AskJiminnyReportActivityServiceTest.ph faVsco.js – AskJiminnyReportActivityServiceTest.php...
|
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
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityServiceTest extends TestCase
{
private ActivitySearch&MockObject $activitySearch;
private ElasticActivityRepository&MockObject $elasticRepository;
private LoggerInterface&MockObject $logger;
private AskJiminnyReportActivityService $service;
protected function setUp(): void
{
$this->activitySearch = $this->createMock(ActivitySearch::class);
$this->elasticRepository = $this->createMock(ElasticActivityRepository::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->service = new AskJiminnyReportActivityService(
$this->activitySearch,
$this->elasticRepository,
$this->logger,
);
}
private function makeFilter(string $key, ?string $value): SearchFilter&MockObject
{
$filter = $this->createMock(SearchFilter::class);
$filter->method('getFilterProperty')->willReturn($key);
$filter->method('getFilterValue')->willReturn($value);
return $filter;
}
private function makeUser(): User&MockObject
{
$tz = new \DateTimeZone('UTC');
$user = $this->createMock(User::class);
$user->method('getTimezone')->willReturn($tz);
$user->method('getId')->willReturn(1);
$user->method('getUuid')->willReturn('user-uuid');
return $user;
}
private function makeSavedSearch(array $filters): Search&MockObject
{
$savedSearch = $this->createMock(Search::class);
$savedSearch->method('getId')->willReturn(42);
$savedSearch->method('getFilters')->willReturn(new \Illuminate\Support\LazyCollection($filters));
return $savedSearch;
}
public function testGetActivityIdsForSavedSearchReturnsIds(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->expects($this->once())
->method('getArrayFilterKeys')
->with($user)
->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->expects($this->once())
->method('onDemandSearchIdsOnly')
->willReturn(['id-1', 'id-2', 'id-3']);
$this->logger->expects($this->once())
->method('info')
->with('[AskJiminnyReport] Fetched activity IDs for saved search');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1', 'id-2', 'id-3'], $result);
}
public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->expects($this->once())->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEmpty($result);
}
public function testGetActivityIdsFiltersOutDateFilters(): void
{
$user = $this->makeUser();
$nonDateFilter = $this->makeFilter('owner_id', '123');
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');
$updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');
$updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');
$savedSearch = $this->makeSavedSearch([
$nonDateFilter,
$startDateFilter,
$endDateFilter,
$updatedFromFilter,
$updatedToFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
}
public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void
{
$user = $this->makeUser();
$closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');
$closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');
$regularFilter = $this->makeFilter('rep_id', '99');
$savedSearch = $this->makeSavedSearch([
$closingStartFilter,
$closingEndFilter,
$regularFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesArrayFilters(): void
{
$user = $this->makeUser();
$filter1 = $this->makeFilter('outcome', 'positive');
$filter2 = $this->makeFilter('outcome', 'negative');
$savedSearch = $this->makeSavedSearch([$filter1, $filter2]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesScalarFilters(): void
{
$user = $this->makeUser();
$filter = $this->makeFilter('direction', 'inbound');
$savedSearch = $this->makeSavedSearch([$filter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-5'], $result);
}
public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
$this->assertFalse($capturedCriteria->isFirstRequest());
}
public function testGetActivityIdsLogsWithCorrectContext(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);
$this->logger->expects($this->once())
->method('info')
->with(
'[AskJiminnyReport] Fetched activity IDs for saved search',
$this->callback(fn ($context) => $context['saved_search_id'] === 42
&& $context['user_id'] === 1
&& $context['activity_count'] === 2)
);
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
15
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Repositories;
use Carbon\CarbonImmutable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
class AutomatedReportsRepository
{
/**
* Create a new automated report
*
* @param array $data
*
* @return AutomatedReport
*/
public function create(array $data): AutomatedReport
{
return AutomatedReport::create($data);
}
/**
* Find an automated report by UUID
*
* @param string $uuid
*
* @return AutomatedReport|null
*/
public function findByUuid(string $uuid): ?AutomatedReport
{
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();
}
public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport
{
if (is_numeric($idOrUuid)) {
return AutomatedReport::find((int) $idOrUuid);
}
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();
}
/**
* Retrieve all standard (non-Ask Jiminny) automated reports.
*
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAllStandardReports(
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->get();
}
/**
* Retrieve all Ask Jiminny reports created by the given user.
*
* @param User $user The user whose reports to retrieve.
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAskJiminnyReportsByUser(
User $user,
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->where('created_by', $user->getId())
->get();
}
private function buildSortedQuery(string $sortColumn, string $sortDirection): \Illuminate\Database\Eloquent\Builder
{
$allowedColumns = ['created_by', 'created_at'];
if (! in_array($sortColumn, $allowedColumns)) {
$sortColumn = 'created_at';
}
$sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';
$query = AutomatedReport::query()->with(['creator', 'team']);
if ($sortColumn === 'created_by') {
$query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')
->orderByRaw("users.name COLLATE utf8mb4_unicode_ci {$sortDirection}")
->select('automated_reports.*');
} else {
$query->orderBy($sortColumn, $sortDirection);
}
return $query;
}
/**
* Get all active and enabled reports with active teams for the specified frequency.
*
* @param string $frequency
*
* @return Collection<AutomatedReport>
*/
public function getActiveReportsByFrequency(string $frequency): Collection
{
return AutomatedReport::where('automated_reports.status', true)
->where('automated_reports.frequency', $frequency)
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->where('teams.status', Team::STATUS_ACTIVE)
->where(function ($query) {
$query->whereNull('automated_reports.expires_at')
->orWhere('automated_reports.expires_at', '>=', now()->toDateString());
})
->select('automated_reports.*')
->get();
}
/**
* Update an automated report
*
* @param AutomatedReport $report
* @param array $data
*
* @return AutomatedReport
*/
public function update(AutomatedReport $report, array $data): AutomatedReport
{
$report->update($data);
return $report;
}
/**
* Create a new automated report result.
*
* @param array $data The data to create the automated report result with.
*
* @return AutomatedReportResult The newly created automated report result.
*/
public function createResult(array $data): AutomatedReportResult
{
return AutomatedReportResult::create($data);
}
/**
* Find an automated report result by UUID.
*
* @param string $uuid The UUID to find the automated report result with.
*
* @return AutomatedReportResult|null The automated report result if found, otherwise null.
*/
public function findResultByUuid(string $uuid): ?AutomatedReportResult
{
return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();
}
public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('uuid', AutomatedReportResult::toOptimized($uuid))
->whereHas('report', static function ($query) use ($user): void {
$query->where('team_id', $user->getTeamId())
->where('created_by', $user->getId());
})
->first();
}
public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('parent_id', $result->getId())
->where('media_type', $type)
->first();
}
public function getGeneratedNotSentResults(): Collection
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNull('sent_at')
->where('status', AutomatedReportResult::STATUS_GENERATED)
->whereHas('report')
->with('report')
->get();
}
public function getPaginatedUserReports(
User $user,
ReportSort $sort,
ReportSortDirection $sortDirection,
int $resultsPerPage,
int $page,
?Carbon $fromDate,
?Carbon $toDate,
array $teamIds,
array $reportTypes,
?string $name,
): LengthAwarePaginator {
$query = AutomatedReportResult::query()
->whereNotNull('automated_report_results.generated_at')
->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')
->where('automated_reports.team_id', $user->getTeamId())
->whereJsonContains('automated_reports.recipients->users', $user->getId())
->orderByRaw("$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}")
->select('automated_report_results.*')
->with('report.team');
if ($fromDate !== null && $toDate !== null) {
$query->whereBetween('generated_at', [$fromDate, $toDate]);
}
if (! empty($teamIds)) {
$query->where(function ($q) use ($teamIds) {
foreach ($teamIds as $id) {
$q->orWhereJsonContains('automated_reports.groups', $id);
}
});
}
if (! empty($reportTypes)) {
$query->whereIn('automated_reports.type', $reportTypes);
}
if (! empty($name)) {
$query->whereLike('name', "%$name%");
}
return $query->paginate($resultsPerPage, ['*'], 'page', $page);
}
public function countUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNotNull('sent_at')
->whereHas('report', function ($q) use ($user) {
$q->where('team_id', $user->getTeamId())
->whereJsonContains('recipients->users', $user->getId());
})
->count();
}
/**
* Get report IDs for a specific team
*
* @param Team $team
*
* @return \Illuminate\Support\Collection
*/
public function getReportIdsByTeam(Team $team): \Illuminate\Support\Collection
{
return AutomatedReport::where('team_id', $team->getId())->pluck('id');
}
/**
* Get all reports for a specific team
*
* @param Team $team
*
* @return Collection
*/
public function getReportsByTeam(Team $team): Collection
{
return AutomatedReport::where('team_id', $team->getId())->get();
}
/**
* Get all report results for a specific report
*
* @param AutomatedReport $report
*
* @return Collection
*/
public function getResultsByReport(AutomatedReport $report): Collection
{
return $this->getResultsByReportQuery($report)->get();
}
public function getResultsByReportQuery(AutomatedReport $report): Builder
{
return AutomatedReportResult::where('report_id', $report->getId());
}
public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder
{
$reportIds = $this->getReportIdsByTeam($team);
return AutomatedReportResult::query()->whereIn('report_id', $reportIds)
->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);
}
/**
* @param int|null $teamId Optional team ID to filter results
*
* @return \Illuminate\Support\Collection<int, int> Collection of team IDs
*/
public function getTeamIdsWithReportsResults(?int $teamId = null): \Illuminate\Support\Collection
{
$query = DB::table('automated_reports')
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->select('teams.id')
->distinct();
if ($teamId !== null) {
$query->where('teams.id', $teamId);
}
return $query->pluck('teams.id');
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"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":"RequestGenerateAskJiminnyReportJobTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'RequestGenerateAskJiminnyReportJobTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'RequestGenerateAskJiminnyReportJobTest'","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,"bounds":{"left":0.0,"top":0.0,"width":0.016666668,"height":0.02111111},"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.016666668,"height":0.02111111},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.025555555},"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.0,"top":0.0,"width":0.014583333,"height":0.025555555},"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 Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AskJiminnyReportActivityService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse PHPUnit\\Framework\\TestCase;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityServiceTest extends TestCase\n{\n private ActivitySearch&MockObject $activitySearch;\n private ElasticActivityRepository&MockObject $elasticRepository;\n private LoggerInterface&MockObject $logger;\n private AskJiminnyReportActivityService $service;\n\n protected function setUp(): void\n {\n $this->activitySearch = $this->createMock(ActivitySearch::class);\n $this->elasticRepository = $this->createMock(ElasticActivityRepository::class);\n $this->logger = $this->createMock(LoggerInterface::class);\n\n $this->service = new AskJiminnyReportActivityService(\n $this->activitySearch,\n $this->elasticRepository,\n $this->logger,\n );\n }\n\n private function makeFilter(string $key, ?string $value): SearchFilter&MockObject\n {\n $filter = $this->createMock(SearchFilter::class);\n $filter->method('getFilterProperty')->willReturn($key);\n $filter->method('getFilterValue')->willReturn($value);\n\n return $filter;\n }\n\n private function makeUser(): User&MockObject\n {\n $tz = new \\DateTimeZone('UTC');\n $user = $this->createMock(User::class);\n $user->method('getTimezone')->willReturn($tz);\n $user->method('getId')->willReturn(1);\n $user->method('getUuid')->willReturn('user-uuid');\n\n return $user;\n }\n\n private function makeSavedSearch(array $filters): Search&MockObject\n {\n $savedSearch = $this->createMock(Search::class);\n $savedSearch->method('getId')->willReturn(42);\n $savedSearch->method('getFilters')->willReturn(new \\Illuminate\\Support\\LazyCollection($filters));\n\n return $savedSearch;\n }\n\n public function testGetActivityIdsForSavedSearchReturnsIds(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->expects($this->once())\n ->method('getArrayFilterKeys')\n ->with($user)\n ->willReturn([]);\n\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n\n $this->elasticRepository->expects($this->once())\n ->method('onDemandSearchIdsOnly')\n ->willReturn(['id-1', 'id-2', 'id-3']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with('[AskJiminnyReport] Fetched activity IDs for saved search');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1', 'id-2', 'id-3'], $result);\n }\n\n public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $this->logger->expects($this->once())->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEmpty($result);\n }\n\n public function testGetActivityIdsFiltersOutDateFilters(): void\n {\n $user = $this->makeUser();\n\n $nonDateFilter = $this->makeFilter('owner_id', '123');\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');\n $updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');\n $updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');\n\n $savedSearch = $this->makeSavedSearch([\n $nonDateFilter,\n $startDateFilter,\n $endDateFilter,\n $updatedFromFilter,\n $updatedToFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n }\n\n public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void\n {\n $user = $this->makeUser();\n\n $closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');\n $closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');\n $regularFilter = $this->makeFilter('rep_id', '99');\n\n $savedSearch = $this->makeSavedSearch([\n $closingStartFilter,\n $closingEndFilter,\n $regularFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesArrayFilters(): void\n {\n $user = $this->makeUser();\n\n $filter1 = $this->makeFilter('outcome', 'positive');\n $filter2 = $this->makeFilter('outcome', 'negative');\n\n $savedSearch = $this->makeSavedSearch([$filter1, $filter2]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesScalarFilters(): void\n {\n $user = $this->makeUser();\n\n $filter = $this->makeFilter('direction', 'inbound');\n $savedSearch = $this->makeSavedSearch([$filter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-5'], $result);\n }\n\n public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertFalse($capturedCriteria->isFirstRequest());\n }\n\n public function testGetActivityIdsLogsWithCorrectContext(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with(\n '[AskJiminnyReport] Fetched activity IDs for saved search',\n $this->callback(fn ($context) => $context['saved_search_id'] === 42\n && $context['user_id'] === 1\n && $context['activity_count'] === 2)\n );\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AskJiminnyReportActivityService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse PHPUnit\\Framework\\TestCase;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityServiceTest extends TestCase\n{\n private ActivitySearch&MockObject $activitySearch;\n private ElasticActivityRepository&MockObject $elasticRepository;\n private LoggerInterface&MockObject $logger;\n private AskJiminnyReportActivityService $service;\n\n protected function setUp(): void\n {\n $this->activitySearch = $this->createMock(ActivitySearch::class);\n $this->elasticRepository = $this->createMock(ElasticActivityRepository::class);\n $this->logger = $this->createMock(LoggerInterface::class);\n\n $this->service = new AskJiminnyReportActivityService(\n $this->activitySearch,\n $this->elasticRepository,\n $this->logger,\n );\n }\n\n private function makeFilter(string $key, ?string $value): SearchFilter&MockObject\n {\n $filter = $this->createMock(SearchFilter::class);\n $filter->method('getFilterProperty')->willReturn($key);\n $filter->method('getFilterValue')->willReturn($value);\n\n return $filter;\n }\n\n private function makeUser(): User&MockObject\n {\n $tz = new \\DateTimeZone('UTC');\n $user = $this->createMock(User::class);\n $user->method('getTimezone')->willReturn($tz);\n $user->method('getId')->willReturn(1);\n $user->method('getUuid')->willReturn('user-uuid');\n\n return $user;\n }\n\n private function makeSavedSearch(array $filters): Search&MockObject\n {\n $savedSearch = $this->createMock(Search::class);\n $savedSearch->method('getId')->willReturn(42);\n $savedSearch->method('getFilters')->willReturn(new \\Illuminate\\Support\\LazyCollection($filters));\n\n return $savedSearch;\n }\n\n public function testGetActivityIdsForSavedSearchReturnsIds(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->expects($this->once())\n ->method('getArrayFilterKeys')\n ->with($user)\n ->willReturn([]);\n\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n\n $this->elasticRepository->expects($this->once())\n ->method('onDemandSearchIdsOnly')\n ->willReturn(['id-1', 'id-2', 'id-3']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with('[AskJiminnyReport] Fetched activity IDs for saved search');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1', 'id-2', 'id-3'], $result);\n }\n\n public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $this->logger->expects($this->once())->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEmpty($result);\n }\n\n public function testGetActivityIdsFiltersOutDateFilters(): void\n {\n $user = $this->makeUser();\n\n $nonDateFilter = $this->makeFilter('owner_id', '123');\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');\n $updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');\n $updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');\n\n $savedSearch = $this->makeSavedSearch([\n $nonDateFilter,\n $startDateFilter,\n $endDateFilter,\n $updatedFromFilter,\n $updatedToFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n }\n\n public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void\n {\n $user = $this->makeUser();\n\n $closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');\n $closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');\n $regularFilter = $this->makeFilter('rep_id', '99');\n\n $savedSearch = $this->makeSavedSearch([\n $closingStartFilter,\n $closingEndFilter,\n $regularFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesArrayFilters(): void\n {\n $user = $this->makeUser();\n\n $filter1 = $this->makeFilter('outcome', 'positive');\n $filter2 = $this->makeFilter('outcome', 'negative');\n\n $savedSearch = $this->makeSavedSearch([$filter1, $filter2]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesScalarFilters(): void\n {\n $user = $this->makeUser();\n\n $filter = $this->makeFilter('direction', 'inbound');\n $savedSearch = $this->makeSavedSearch([$filter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-5'], $result);\n }\n\n public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertFalse($capturedCriteria->isFirstRequest());\n }\n\n public function testGetActivityIdsLogsWithCorrectContext(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with(\n '[AskJiminnyReport] Fetched activity IDs for saved search',\n $this->callback(fn ($context) => $context['saved_search_id'] === 42\n && $context['user_id'] === 1\n && $context['activity_count'] === 2)\n );\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n }\n}","role_description":"text entry area","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":"15","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"4","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\\Repositories;\n\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Pagination\\LengthAwarePaginator;\nuse Illuminate\\Support\\Facades\\DB;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSort;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSortDirection;\n\nclass AutomatedReportsRepository\n{\n /**\n * Create a new automated report\n *\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function create(array $data): AutomatedReport\n {\n return AutomatedReport::create($data);\n }\n\n /**\n * Find an automated report by UUID\n *\n * @param string $uuid\n *\n * @return AutomatedReport|null\n */\n public function findByUuid(string $uuid): ?AutomatedReport\n {\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();\n }\n\n public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport\n {\n if (is_numeric($idOrUuid)) {\n return AutomatedReport::find((int) $idOrUuid);\n }\n\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();\n }\n\n /**\n * Retrieve all standard (non-Ask Jiminny) automated reports.\n *\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAllStandardReports(\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->get();\n }\n\n /**\n * Retrieve all Ask Jiminny reports created by the given user.\n *\n * @param User $user The user whose reports to retrieve.\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAskJiminnyReportsByUser(\n User $user,\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->where('created_by', $user->getId())\n ->get();\n }\n\n private function buildSortedQuery(string $sortColumn, string $sortDirection): \\Illuminate\\Database\\Eloquent\\Builder\n {\n $allowedColumns = ['created_by', 'created_at'];\n if (! in_array($sortColumn, $allowedColumns)) {\n $sortColumn = 'created_at';\n }\n\n $sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';\n\n $query = AutomatedReport::query()->with(['creator', 'team']);\n\n if ($sortColumn === 'created_by') {\n $query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')\n ->orderByRaw(\"users.name COLLATE utf8mb4_unicode_ci {$sortDirection}\")\n ->select('automated_reports.*');\n } else {\n $query->orderBy($sortColumn, $sortDirection);\n }\n\n return $query;\n }\n\n /**\n * Get all active and enabled reports with active teams for the specified frequency.\n *\n * @param string $frequency\n *\n * @return Collection<AutomatedReport>\n */\n public function getActiveReportsByFrequency(string $frequency): Collection\n {\n return AutomatedReport::where('automated_reports.status', true)\n ->where('automated_reports.frequency', $frequency)\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->where('teams.status', Team::STATUS_ACTIVE)\n ->where(function ($query) {\n $query->whereNull('automated_reports.expires_at')\n ->orWhere('automated_reports.expires_at', '>=', now()->toDateString());\n })\n ->select('automated_reports.*')\n ->get();\n }\n\n /**\n * Update an automated report\n *\n * @param AutomatedReport $report\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function update(AutomatedReport $report, array $data): AutomatedReport\n {\n $report->update($data);\n\n return $report;\n }\n\n /**\n * Create a new automated report result.\n *\n * @param array $data The data to create the automated report result with.\n *\n * @return AutomatedReportResult The newly created automated report result.\n */\n public function createResult(array $data): AutomatedReportResult\n {\n return AutomatedReportResult::create($data);\n }\n\n /**\n * Find an automated report result by UUID.\n *\n * @param string $uuid The UUID to find the automated report result with.\n *\n * @return AutomatedReportResult|null The automated report result if found, otherwise null.\n */\n public function findResultByUuid(string $uuid): ?AutomatedReportResult\n {\n return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();\n }\n\n public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('uuid', AutomatedReportResult::toOptimized($uuid))\n ->whereHas('report', static function ($query) use ($user): void {\n $query->where('team_id', $user->getTeamId())\n ->where('created_by', $user->getId());\n })\n ->first();\n }\n\n public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('parent_id', $result->getId())\n ->where('media_type', $type)\n ->first();\n }\n\n public function getGeneratedNotSentResults(): Collection\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNull('sent_at')\n ->where('status', AutomatedReportResult::STATUS_GENERATED)\n ->whereHas('report')\n ->with('report')\n ->get();\n }\n\n public function getPaginatedUserReports(\n User $user,\n ReportSort $sort,\n ReportSortDirection $sortDirection,\n int $resultsPerPage,\n int $page,\n ?Carbon $fromDate,\n ?Carbon $toDate,\n array $teamIds,\n array $reportTypes,\n ?string $name,\n ): LengthAwarePaginator {\n $query = AutomatedReportResult::query()\n ->whereNotNull('automated_report_results.generated_at')\n ->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')\n ->where('automated_reports.team_id', $user->getTeamId())\n ->whereJsonContains('automated_reports.recipients->users', $user->getId())\n ->orderByRaw(\"$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}\")\n ->select('automated_report_results.*')\n ->with('report.team');\n\n if ($fromDate !== null && $toDate !== null) {\n $query->whereBetween('generated_at', [$fromDate, $toDate]);\n }\n\n if (! empty($teamIds)) {\n $query->where(function ($q) use ($teamIds) {\n foreach ($teamIds as $id) {\n $q->orWhereJsonContains('automated_reports.groups', $id);\n }\n });\n }\n\n if (! empty($reportTypes)) {\n $query->whereIn('automated_reports.type', $reportTypes);\n }\n\n if (! empty($name)) {\n $query->whereLike('name', \"%$name%\");\n }\n\n return $query->paginate($resultsPerPage, ['*'], 'page', $page);\n }\n\n public function countUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNotNull('sent_at')\n ->whereHas('report', function ($q) use ($user) {\n $q->where('team_id', $user->getTeamId())\n ->whereJsonContains('recipients->users', $user->getId());\n })\n ->count();\n }\n\n /**\n * Get report IDs for a specific team\n *\n * @param Team $team\n *\n * @return \\Illuminate\\Support\\Collection\n */\n public function getReportIdsByTeam(Team $team): \\Illuminate\\Support\\Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->pluck('id');\n }\n\n /**\n * Get all reports for a specific team\n *\n * @param Team $team\n *\n * @return Collection\n */\n public function getReportsByTeam(Team $team): Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->get();\n }\n\n /**\n * Get all report results for a specific report\n *\n * @param AutomatedReport $report\n *\n * @return Collection\n */\n public function getResultsByReport(AutomatedReport $report): Collection\n {\n return $this->getResultsByReportQuery($report)->get();\n }\n\n public function getResultsByReportQuery(AutomatedReport $report): Builder\n {\n return AutomatedReportResult::where('report_id', $report->getId());\n }\n\n public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder\n {\n $reportIds = $this->getReportIdsByTeam($team);\n\n return AutomatedReportResult::query()->whereIn('report_id', $reportIds)\n ->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);\n }\n\n /**\n * @param int|null $teamId Optional team ID to filter results\n *\n * @return \\Illuminate\\Support\\Collection<int, int> Collection of team IDs\n */\n public function getTeamIdsWithReportsResults(?int $teamId = null): \\Illuminate\\Support\\Collection\n {\n $query = DB::table('automated_reports')\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->select('teams.id')\n ->distinct();\n\n if ($teamId !== null) {\n $query->where('teams.id', $teamId);\n }\n\n return $query->pluck('teams.id');\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Repositories;\n\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Pagination\\LengthAwarePaginator;\nuse Illuminate\\Support\\Facades\\DB;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSort;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSortDirection;\n\nclass AutomatedReportsRepository\n{\n /**\n * Create a new automated report\n *\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function create(array $data): AutomatedReport\n {\n return AutomatedReport::create($data);\n }\n\n /**\n * Find an automated report by UUID\n *\n * @param string $uuid\n *\n * @return AutomatedReport|null\n */\n public function findByUuid(string $uuid): ?AutomatedReport\n {\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();\n }\n\n public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport\n {\n if (is_numeric($idOrUuid)) {\n return AutomatedReport::find((int) $idOrUuid);\n }\n\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();\n }\n\n /**\n * Retrieve all standard (non-Ask Jiminny) automated reports.\n *\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAllStandardReports(\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->get();\n }\n\n /**\n * Retrieve all Ask Jiminny reports created by the given user.\n *\n * @param User $user The user whose reports to retrieve.\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAskJiminnyReportsByUser(\n User $user,\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->where('created_by', $user->getId())\n ->get();\n }\n\n private function buildSortedQuery(string $sortColumn, string $sortDirection): \\Illuminate\\Database\\Eloquent\\Builder\n {\n $allowedColumns = ['created_by', 'created_at'];\n if (! in_array($sortColumn, $allowedColumns)) {\n $sortColumn = 'created_at';\n }\n\n $sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';\n\n $query = AutomatedReport::query()->with(['creator', 'team']);\n\n if ($sortColumn === 'created_by') {\n $query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')\n ->orderByRaw(\"users.name COLLATE utf8mb4_unicode_ci {$sortDirection}\")\n ->select('automated_reports.*');\n } else {\n $query->orderBy($sortColumn, $sortDirection);\n }\n\n return $query;\n }\n\n /**\n * Get all active and enabled reports with active teams for the specified frequency.\n *\n * @param string $frequency\n *\n * @return Collection<AutomatedReport>\n */\n public function getActiveReportsByFrequency(string $frequency): Collection\n {\n return AutomatedReport::where('automated_reports.status', true)\n ->where('automated_reports.frequency', $frequency)\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->where('teams.status', Team::STATUS_ACTIVE)\n ->where(function ($query) {\n $query->whereNull('automated_reports.expires_at')\n ->orWhere('automated_reports.expires_at', '>=', now()->toDateString());\n })\n ->select('automated_reports.*')\n ->get();\n }\n\n /**\n * Update an automated report\n *\n * @param AutomatedReport $report\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function update(AutomatedReport $report, array $data): AutomatedReport\n {\n $report->update($data);\n\n return $report;\n }\n\n /**\n * Create a new automated report result.\n *\n * @param array $data The data to create the automated report result with.\n *\n * @return AutomatedReportResult The newly created automated report result.\n */\n public function createResult(array $data): AutomatedReportResult\n {\n return AutomatedReportResult::create($data);\n }\n\n /**\n * Find an automated report result by UUID.\n *\n * @param string $uuid The UUID to find the automated report result with.\n *\n * @return AutomatedReportResult|null The automated report result if found, otherwise null.\n */\n public function findResultByUuid(string $uuid): ?AutomatedReportResult\n {\n return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();\n }\n\n public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('uuid', AutomatedReportResult::toOptimized($uuid))\n ->whereHas('report', static function ($query) use ($user): void {\n $query->where('team_id', $user->getTeamId())\n ->where('created_by', $user->getId());\n })\n ->first();\n }\n\n public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('parent_id', $result->getId())\n ->where('media_type', $type)\n ->first();\n }\n\n public function getGeneratedNotSentResults(): Collection\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNull('sent_at')\n ->where('status', AutomatedReportResult::STATUS_GENERATED)\n ->whereHas('report')\n ->with('report')\n ->get();\n }\n\n public function getPaginatedUserReports(\n User $user,\n ReportSort $sort,\n ReportSortDirection $sortDirection,\n int $resultsPerPage,\n int $page,\n ?Carbon $fromDate,\n ?Carbon $toDate,\n array $teamIds,\n array $reportTypes,\n ?string $name,\n ): LengthAwarePaginator {\n $query = AutomatedReportResult::query()\n ->whereNotNull('automated_report_results.generated_at')\n ->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')\n ->where('automated_reports.team_id', $user->getTeamId())\n ->whereJsonContains('automated_reports.recipients->users', $user->getId())\n ->orderByRaw(\"$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}\")\n ->select('automated_report_results.*')\n ->with('report.team');\n\n if ($fromDate !== null && $toDate !== null) {\n $query->whereBetween('generated_at', [$fromDate, $toDate]);\n }\n\n if (! empty($teamIds)) {\n $query->where(function ($q) use ($teamIds) {\n foreach ($teamIds as $id) {\n $q->orWhereJsonContains('automated_reports.groups', $id);\n }\n });\n }\n\n if (! empty($reportTypes)) {\n $query->whereIn('automated_reports.type', $reportTypes);\n }\n\n if (! empty($name)) {\n $query->whereLike('name', \"%$name%\");\n }\n\n return $query->paginate($resultsPerPage, ['*'], 'page', $page);\n }\n\n public function countUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNotNull('sent_at')\n ->whereHas('report', function ($q) use ($user) {\n $q->where('team_id', $user->getTeamId())\n ->whereJsonContains('recipients->users', $user->getId());\n })\n ->count();\n }\n\n /**\n * Get report IDs for a specific team\n *\n * @param Team $team\n *\n * @return \\Illuminate\\Support\\Collection\n */\n public function getReportIdsByTeam(Team $team): \\Illuminate\\Support\\Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->pluck('id');\n }\n\n /**\n * Get all reports for a specific team\n *\n * @param Team $team\n *\n * @return Collection\n */\n public function getReportsByTeam(Team $team): Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->get();\n }\n\n /**\n * Get all report results for a specific report\n *\n * @param AutomatedReport $report\n *\n * @return Collection\n */\n public function getResultsByReport(AutomatedReport $report): Collection\n {\n return $this->getResultsByReportQuery($report)->get();\n }\n\n public function getResultsByReportQuery(AutomatedReport $report): Builder\n {\n return AutomatedReportResult::where('report_id', $report->getId());\n }\n\n public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder\n {\n $reportIds = $this->getReportIdsByTeam($team);\n\n return AutomatedReportResult::query()->whereIn('report_id', $reportIds)\n ->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);\n }\n\n /**\n * @param int|null $teamId Optional team ID to filter results\n *\n * @return \\Illuminate\\Support\\Collection<int, int> Collection of team IDs\n */\n public function getTeamIdsWithReportsResults(?int $teamId = null): \\Illuminate\\Support\\Collection\n {\n $query = DB::table('automated_reports')\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->select('teams.id')\n ->distinct();\n\n if ($teamId !== null) {\n $query->where('teams.id', $teamId);\n }\n\n return $query->pluck('teams.id');\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","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":"AXButton","text":"Expand Selected","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":"AXButton","text":"Collapse All","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":"AXButton","text":"Options","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":"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}]...
|
8932460332387265586
|
-8276790037575160524
|
click
|
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
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityServiceTest extends TestCase
{
private ActivitySearch&MockObject $activitySearch;
private ElasticActivityRepository&MockObject $elasticRepository;
private LoggerInterface&MockObject $logger;
private AskJiminnyReportActivityService $service;
protected function setUp(): void
{
$this->activitySearch = $this->createMock(ActivitySearch::class);
$this->elasticRepository = $this->createMock(ElasticActivityRepository::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->service = new AskJiminnyReportActivityService(
$this->activitySearch,
$this->elasticRepository,
$this->logger,
);
}
private function makeFilter(string $key, ?string $value): SearchFilter&MockObject
{
$filter = $this->createMock(SearchFilter::class);
$filter->method('getFilterProperty')->willReturn($key);
$filter->method('getFilterValue')->willReturn($value);
return $filter;
}
private function makeUser(): User&MockObject
{
$tz = new \DateTimeZone('UTC');
$user = $this->createMock(User::class);
$user->method('getTimezone')->willReturn($tz);
$user->method('getId')->willReturn(1);
$user->method('getUuid')->willReturn('user-uuid');
return $user;
}
private function makeSavedSearch(array $filters): Search&MockObject
{
$savedSearch = $this->createMock(Search::class);
$savedSearch->method('getId')->willReturn(42);
$savedSearch->method('getFilters')->willReturn(new \Illuminate\Support\LazyCollection($filters));
return $savedSearch;
}
public function testGetActivityIdsForSavedSearchReturnsIds(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->expects($this->once())
->method('getArrayFilterKeys')
->with($user)
->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->expects($this->once())
->method('onDemandSearchIdsOnly')
->willReturn(['id-1', 'id-2', 'id-3']);
$this->logger->expects($this->once())
->method('info')
->with('[AskJiminnyReport] Fetched activity IDs for saved search');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1', 'id-2', 'id-3'], $result);
}
public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->expects($this->once())->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEmpty($result);
}
public function testGetActivityIdsFiltersOutDateFilters(): void
{
$user = $this->makeUser();
$nonDateFilter = $this->makeFilter('owner_id', '123');
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');
$updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');
$updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');
$savedSearch = $this->makeSavedSearch([
$nonDateFilter,
$startDateFilter,
$endDateFilter,
$updatedFromFilter,
$updatedToFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
}
public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void
{
$user = $this->makeUser();
$closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');
$closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');
$regularFilter = $this->makeFilter('rep_id', '99');
$savedSearch = $this->makeSavedSearch([
$closingStartFilter,
$closingEndFilter,
$regularFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesArrayFilters(): void
{
$user = $this->makeUser();
$filter1 = $this->makeFilter('outcome', 'positive');
$filter2 = $this->makeFilter('outcome', 'negative');
$savedSearch = $this->makeSavedSearch([$filter1, $filter2]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesScalarFilters(): void
{
$user = $this->makeUser();
$filter = $this->makeFilter('direction', 'inbound');
$savedSearch = $this->makeSavedSearch([$filter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-5'], $result);
}
public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
$this->assertFalse($capturedCriteria->isFirstRequest());
}
public function testGetActivityIdsLogsWithCorrectContext(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);
$this->logger->expects($this->once())
->method('info')
->with(
'[AskJiminnyReport] Fetched activity IDs for saved search',
$this->callback(fn ($context) => $context['saved_search_id'] === 42
&& $context['user_id'] === 1
&& $context['activity_count'] === 2)
);
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
15
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Repositories;
use Carbon\CarbonImmutable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
class AutomatedReportsRepository
{
/**
* Create a new automated report
*
* @param array $data
*
* @return AutomatedReport
*/
public function create(array $data): AutomatedReport
{
return AutomatedReport::create($data);
}
/**
* Find an automated report by UUID
*
* @param string $uuid
*
* @return AutomatedReport|null
*/
public function findByUuid(string $uuid): ?AutomatedReport
{
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();
}
public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport
{
if (is_numeric($idOrUuid)) {
return AutomatedReport::find((int) $idOrUuid);
}
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();
}
/**
* Retrieve all standard (non-Ask Jiminny) automated reports.
*
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAllStandardReports(
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->get();
}
/**
* Retrieve all Ask Jiminny reports created by the given user.
*
* @param User $user The user whose reports to retrieve.
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAskJiminnyReportsByUser(
User $user,
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->where('created_by', $user->getId())
->get();
}
private function buildSortedQuery(string $sortColumn, string $sortDirection): \Illuminate\Database\Eloquent\Builder
{
$allowedColumns = ['created_by', 'created_at'];
if (! in_array($sortColumn, $allowedColumns)) {
$sortColumn = 'created_at';
}
$sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';
$query = AutomatedReport::query()->with(['creator', 'team']);
if ($sortColumn === 'created_by') {
$query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')
->orderByRaw("users.name COLLATE utf8mb4_unicode_ci {$sortDirection}")
->select('automated_reports.*');
} else {
$query->orderBy($sortColumn, $sortDirection);
}
return $query;
}
/**
* Get all active and enabled reports with active teams for the specified frequency.
*
* @param string $frequency
*
* @return Collection<AutomatedReport>
*/
public function getActiveReportsByFrequency(string $frequency): Collection
{
return AutomatedReport::where('automated_reports.status', true)
->where('automated_reports.frequency', $frequency)
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->where('teams.status', Team::STATUS_ACTIVE)
->where(function ($query) {
$query->whereNull('automated_reports.expires_at')
->orWhere('automated_reports.expires_at', '>=', now()->toDateString());
})
->select('automated_reports.*')
->get();
}
/**
* Update an automated report
*
* @param AutomatedReport $report
* @param array $data
*
* @return AutomatedReport
*/
public function update(AutomatedReport $report, array $data): AutomatedReport
{
$report->update($data);
return $report;
}
/**
* Create a new automated report result.
*
* @param array $data The data to create the automated report result with.
*
* @return AutomatedReportResult The newly created automated report result.
*/
public function createResult(array $data): AutomatedReportResult
{
return AutomatedReportResult::create($data);
}
/**
* Find an automated report result by UUID.
*
* @param string $uuid The UUID to find the automated report result with.
*
* @return AutomatedReportResult|null The automated report result if found, otherwise null.
*/
public function findResultByUuid(string $uuid): ?AutomatedReportResult
{
return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();
}
public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('uuid', AutomatedReportResult::toOptimized($uuid))
->whereHas('report', static function ($query) use ($user): void {
$query->where('team_id', $user->getTeamId())
->where('created_by', $user->getId());
})
->first();
}
public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('parent_id', $result->getId())
->where('media_type', $type)
->first();
}
public function getGeneratedNotSentResults(): Collection
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNull('sent_at')
->where('status', AutomatedReportResult::STATUS_GENERATED)
->whereHas('report')
->with('report')
->get();
}
public function getPaginatedUserReports(
User $user,
ReportSort $sort,
ReportSortDirection $sortDirection,
int $resultsPerPage,
int $page,
?Carbon $fromDate,
?Carbon $toDate,
array $teamIds,
array $reportTypes,
?string $name,
): LengthAwarePaginator {
$query = AutomatedReportResult::query()
->whereNotNull('automated_report_results.generated_at')
->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')
->where('automated_reports.team_id', $user->getTeamId())
->whereJsonContains('automated_reports.recipients->users', $user->getId())
->orderByRaw("$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}")
->select('automated_report_results.*')
->with('report.team');
if ($fromDate !== null && $toDate !== null) {
$query->whereBetween('generated_at', [$fromDate, $toDate]);
}
if (! empty($teamIds)) {
$query->where(function ($q) use ($teamIds) {
foreach ($teamIds as $id) {
$q->orWhereJsonContains('automated_reports.groups', $id);
}
});
}
if (! empty($reportTypes)) {
$query->whereIn('automated_reports.type', $reportTypes);
}
if (! empty($name)) {
$query->whereLike('name', "%$name%");
}
return $query->paginate($resultsPerPage, ['*'], 'page', $page);
}
public function countUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNotNull('sent_at')
->whereHas('report', function ($q) use ($user) {
$q->where('team_id', $user->getTeamId())
->whereJsonContains('recipients->users', $user->getId());
})
->count();
}
/**
* Get report IDs for a specific team
*
* @param Team $team
*
* @return \Illuminate\Support\Collection
*/
public function getReportIdsByTeam(Team $team): \Illuminate\Support\Collection
{
return AutomatedReport::where('team_id', $team->getId())->pluck('id');
}
/**
* Get all reports for a specific team
*
* @param Team $team
*
* @return Collection
*/
public function getReportsByTeam(Team $team): Collection
{
return AutomatedReport::where('team_id', $team->getId())->get();
}
/**
* Get all report results for a specific report
*
* @param AutomatedReport $report
*
* @return Collection
*/
public function getResultsByReport(AutomatedReport $report): Collection
{
return $this->getResultsByReportQuery($report)->get();
}
public function getResultsByReportQuery(AutomatedReport $report): Builder
{
return AutomatedReportResult::where('report_id', $report->getId());
}
public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder
{
$reportIds = $this->getReportIdsByTeam($team);
return AutomatedReportResult::query()->whereIn('report_id', $reportIds)
->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);
}
/**
* @param int|null $teamId Optional team ID to filter results
*
* @return \Illuminate\Support\Collection<int, int> Collection of team IDs
*/
public function getTeamIdsWithReportsResults(?int $teamId = null): \Illuminate\Support\Collection
{
$query = DB::table('automated_reports')
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->select('teams.id')
->distinct();
if ($teamId !== null) {
$query->where('teams.id', $teamId);
}
return $query->pluck('teams.id');
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
10963
|
|
10970
|
217
|
40
|
2026-04-14T09:06:09.944850+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157569944_m2.jpg...
|
PhpStorm
|
faVsco.js – AskJiminnyReportActivityServiceTest.ph faVsco.js – AskJiminnyReportActivityServiceTest.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
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityServiceTest extends TestCase
{
private ActivitySearch&MockObject $activitySearch;
private ElasticActivityRepository&MockObject $elasticRepository;
private LoggerInterface&MockObject $logger;
private AskJiminnyReportActivityService $service;
protected function setUp(): void
{
$this->activitySearch = $this->createMock(ActivitySearch::class);
$this->elasticRepository = $this->createMock(ElasticActivityRepository::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->service = new AskJiminnyReportActivityService(
$this->activitySearch,
$this->elasticRepository,
$this->logger,
);
}
private function makeFilter(string $key, ?string $value): SearchFilter&MockObject
{
$filter = $this->createMock(SearchFilter::class);
$filter->method('getFilterProperty')->willReturn($key);
$filter->method('getFilterValue')->willReturn($value);
return $filter;
}
private function makeUser(): User&MockObject
{
$tz = new \DateTimeZone('UTC');
$user = $this->createMock(User::class);
$user->method('getTimezone')->willReturn($tz);
$user->method('getId')->willReturn(1);
$user->method('getUuid')->willReturn('user-uuid');
return $user;
}
private function makeSavedSearch(array $filters): Search&MockObject
{
$savedSearch = $this->createMock(Search::class);
$savedSearch->method('getId')->willReturn(42);
$savedSearch->method('getFilters')->willReturn(new \Illuminate\Support\LazyCollection($filters));
return $savedSearch;
}
public function testGetActivityIdsForSavedSearchReturnsIds(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->expects($this->once())
->method('getArrayFilterKeys')
->with($user)
->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->expects($this->once())
->method('onDemandSearchIdsOnly')
->willReturn(['id-1', 'id-2', 'id-3']);
$this->logger->expects($this->once())
->method('info')
->with('[AskJiminnyReport] Fetched activity IDs for saved search');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1', 'id-2', 'id-3'], $result);
}
public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->expects($this->once())->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEmpty($result);
}
public function testGetActivityIdsFiltersOutDateFilters(): void
{
$user = $this->makeUser();
$nonDateFilter = $this->makeFilter('owner_id', '123');
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');
$updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');
$updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');
$savedSearch = $this->makeSavedSearch([
$nonDateFilter,
$startDateFilter,
$endDateFilter,
$updatedFromFilter,
$updatedToFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
}
public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void
{
$user = $this->makeUser();
$closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');
$closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');
$regularFilter = $this->makeFilter('rep_id', '99');
$savedSearch = $this->makeSavedSearch([
$closingStartFilter,
$closingEndFilter,
$regularFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesArrayFilters(): void
{
$user = $this->makeUser();
$filter1 = $this->makeFilter('outcome', 'positive');
$filter2 = $this->makeFilter('outcome', 'negative');
$savedSearch = $this->makeSavedSearch([$filter1, $filter2]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesScalarFilters(): void
{
$user = $this->makeUser();
$filter = $this->makeFilter('direction', 'inbound');
$savedSearch = $this->makeSavedSearch([$filter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-5'], $result);
}
public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
$this->assertFalse($capturedCriteria->isFirstRequest());
}
public function testGetActivityIdsLogsWithCorrectContext(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);
$this->logger->expects($this->once())
->method('info')
->with(
'[AskJiminnyReport] Fetched activity IDs for saved search',
$this->callback(fn ($context) => $context['saved_search_id'] === 42
&& $context['user_id'] === 1
&& $context['activity_count'] === 2)
);
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
15
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Repositories;
use Carbon\CarbonImmutable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
class AutomatedReportsRepository
{
/**
* Create a new automated report
*
* @param array $data
*
* @return AutomatedReport
*/
public function create(array $data): AutomatedReport
{
return AutomatedReport::create($data);
}
/**
* Find an automated report by UUID
*
* @param string $uuid
*
* @return AutomatedReport|null
*/
public function findByUuid(string $uuid): ?AutomatedReport
{
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();
}
public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport
{
if (is_numeric($idOrUuid)) {
return AutomatedReport::find((int) $idOrUuid);
}
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();
}
/**
* Retrieve all standard (non-Ask Jiminny) automated reports.
*
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAllStandardReports(
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->get();
}
/**
* Retrieve all Ask Jiminny reports created by the given user.
*
* @param User $user The user whose reports to retrieve.
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAskJiminnyReportsByUser(
User $user,
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->where('created_by', $user->getId())
->get();
}
private function buildSortedQuery(string $sortColumn, string $sortDirection): \Illuminate\Database\Eloquent\Builder
{
$allowedColumns = ['created_by', 'created_at'];
if (! in_array($sortColumn, $allowedColumns)) {
$sortColumn = 'created_at';
}
$sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';
$query = AutomatedReport::query()->with(['creator', 'team']);
if ($sortColumn === 'created_by') {
$query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')
->orderByRaw("users.name COLLATE utf8mb4_unicode_ci {$sortDirection}")
->select('automated_reports.*');
} else {
$query->orderBy($sortColumn, $sortDirection);
}
return $query;
}
/**
* Get all active and enabled reports with active teams for the specified frequency.
*
* @param string $frequency
*
* @return Collection<AutomatedReport>
*/
public function getActiveReportsByFrequency(string $frequency): Collection
{
return AutomatedReport::where('automated_reports.status', true)
->where('automated_reports.frequency', $frequency)
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->where('teams.status', Team::STATUS_ACTIVE)
->where(function ($query) {
$query->whereNull('automated_reports.expires_at')
->orWhere('automated_reports.expires_at', '>=', now()->toDateString());
})
->select('automated_reports.*')
->get();
}
/**
* Update an automated report
*
* @param AutomatedReport $report
* @param array $data
*
* @return AutomatedReport
*/
public function update(AutomatedReport $report, array $data): AutomatedReport
{
$report->update($data);
return $report;
}
/**
* Create a new automated report result.
*
* @param array $data The data to create the automated report result with.
*
* @return AutomatedReportResult The newly created automated report result.
*/
public function createResult(array $data): AutomatedReportResult
{
return AutomatedReportResult::create($data);
}
/**
* Find an automated report result by UUID.
*
* @param string $uuid The UUID to find the automated report result with.
*
* @return AutomatedReportResult|null The automated report result if found, otherwise null.
*/
public function findResultByUuid(string $uuid): ?AutomatedReportResult
{
return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();
}
public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('uuid', AutomatedReportResult::toOptimized($uuid))
->whereHas('report', static function ($query) use ($user): void {
$query->where('team_id', $user->getTeamId())
->where('created_by', $user->getId());
})
->first();
}
public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('parent_id', $result->getId())
->where('media_type', $type)
->first();
}
public function getGeneratedNotSentResults(): Collection
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNull('sent_at')
->where('status', AutomatedReportResult::STATUS_GENERATED)
->whereHas('report')
->with('report')
->get();
}
public function getPaginatedUserReports(
User $user,
ReportSort $sort,
ReportSortDirection $sortDirection,
int $resultsPerPage,
int $page,
?Carbon $fromDate,
?Carbon $toDate,
array $teamIds,
array $reportTypes,
?string $name,
): LengthAwarePaginator {
$query = AutomatedReportResult::query()
->whereNotNull('automated_report_results.generated_at')
->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')
->where('automated_reports.team_id', $user->getTeamId())
->whereJsonContains('automated_reports.recipients->users', $user->getId())
->orderByRaw("$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}")
->select('automated_report_results.*')
->with('report.team');
if ($fromDate !== null && $toDate !== null) {
$query->whereBetween('generated_at', [$fromDate, $toDate]);
}
if (! empty($teamIds)) {
$query->where(function ($q) use ($teamIds) {
foreach ($teamIds as $id) {
$q->orWhereJsonContains('automated_reports.groups', $id);
}
});
}
if (! empty($reportTypes)) {
$query->whereIn('automated_reports.type', $reportTypes);
}
if (! empty($name)) {
$query->whereLike('name', "%$name%");
}
return $query->paginate($resultsPerPage, ['*'], 'page', $page);
}
public function countUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNotNull('sent_at')
->whereHas('report', function ($q) use ($user) {
$q->where('team_id', $user->getTeamId())
->whereJsonContains('recipients->users', $user->getId());
})
->count();
}
/**
* Get report IDs for a specific team
*
* @param Team $team
*
* @return \Illuminate\Support\Collection
*/
public function getReportIdsByTeam(Team $team): \Illuminate\Support\Collection
{
return AutomatedReport::where('team_id', $team->getId())->pluck('id');
}
/**
* Get all reports for a specific team
*
* @param Team $team
*
* @return Collection
*/
public function getReportsByTeam(Team $team): Collection
{
return AutomatedReport::where('team_id', $team->getId())->get();
}
/**
* Get all report results for a specific report
*
* @param AutomatedReport $report
*
* @return Collection
*/
public function getResultsByReport(AutomatedReport $report): Collection
{
return $this->getResultsByReportQuery($report)->get();
}
public function getResultsByReportQuery(AutomatedReport $report): Builder
{
return AutomatedReportResult::where('report_id', $report->getId());
}
public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder
{
$reportIds = $this->getReportIdsByTeam($team);
return AutomatedReportResult::query()->whereIn('report_id', $reportIds)
->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);
}
/**
* @param int|null $teamId Optional team ID to filter results
*
* @return \Illuminate\Support\Collection<int, int> Collection of team IDs
*/
public function getTeamIdsWithReportsResults(?int $teamId = null): \Illuminate\Support\Collection
{
$query = DB::table('automated_reports')
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->select('teams.id')
->distinct();
if ($teamId !== null) {
$query->where('teams.id', $teamId);
}
return $query->pluck('teams.id');
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"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.76171875,"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":"RequestGenerateAskJiminnyReportJobTest","depth":6,"bounds":{"left":0.7796875,"top":0.017361112,"width":0.12109375,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'RequestGenerateAskJiminnyReportJobTest'","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 'RequestGenerateAskJiminnyReportJobTest'","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.23320313,"top":1.0,"width":0.009375,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.009375,"height":0.0},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.00859375,"height":0.0},"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.23320313,"top":1.0,"width":0.008203125,"height":0.0},"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 Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AskJiminnyReportActivityService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse PHPUnit\\Framework\\TestCase;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityServiceTest extends TestCase\n{\n private ActivitySearch&MockObject $activitySearch;\n private ElasticActivityRepository&MockObject $elasticRepository;\n private LoggerInterface&MockObject $logger;\n private AskJiminnyReportActivityService $service;\n\n protected function setUp(): void\n {\n $this->activitySearch = $this->createMock(ActivitySearch::class);\n $this->elasticRepository = $this->createMock(ElasticActivityRepository::class);\n $this->logger = $this->createMock(LoggerInterface::class);\n\n $this->service = new AskJiminnyReportActivityService(\n $this->activitySearch,\n $this->elasticRepository,\n $this->logger,\n );\n }\n\n private function makeFilter(string $key, ?string $value): SearchFilter&MockObject\n {\n $filter = $this->createMock(SearchFilter::class);\n $filter->method('getFilterProperty')->willReturn($key);\n $filter->method('getFilterValue')->willReturn($value);\n\n return $filter;\n }\n\n private function makeUser(): User&MockObject\n {\n $tz = new \\DateTimeZone('UTC');\n $user = $this->createMock(User::class);\n $user->method('getTimezone')->willReturn($tz);\n $user->method('getId')->willReturn(1);\n $user->method('getUuid')->willReturn('user-uuid');\n\n return $user;\n }\n\n private function makeSavedSearch(array $filters): Search&MockObject\n {\n $savedSearch = $this->createMock(Search::class);\n $savedSearch->method('getId')->willReturn(42);\n $savedSearch->method('getFilters')->willReturn(new \\Illuminate\\Support\\LazyCollection($filters));\n\n return $savedSearch;\n }\n\n public function testGetActivityIdsForSavedSearchReturnsIds(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->expects($this->once())\n ->method('getArrayFilterKeys')\n ->with($user)\n ->willReturn([]);\n\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n\n $this->elasticRepository->expects($this->once())\n ->method('onDemandSearchIdsOnly')\n ->willReturn(['id-1', 'id-2', 'id-3']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with('[AskJiminnyReport] Fetched activity IDs for saved search');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1', 'id-2', 'id-3'], $result);\n }\n\n public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $this->logger->expects($this->once())->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEmpty($result);\n }\n\n public function testGetActivityIdsFiltersOutDateFilters(): void\n {\n $user = $this->makeUser();\n\n $nonDateFilter = $this->makeFilter('owner_id', '123');\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');\n $updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');\n $updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');\n\n $savedSearch = $this->makeSavedSearch([\n $nonDateFilter,\n $startDateFilter,\n $endDateFilter,\n $updatedFromFilter,\n $updatedToFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n }\n\n public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void\n {\n $user = $this->makeUser();\n\n $closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');\n $closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');\n $regularFilter = $this->makeFilter('rep_id', '99');\n\n $savedSearch = $this->makeSavedSearch([\n $closingStartFilter,\n $closingEndFilter,\n $regularFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesArrayFilters(): void\n {\n $user = $this->makeUser();\n\n $filter1 = $this->makeFilter('outcome', 'positive');\n $filter2 = $this->makeFilter('outcome', 'negative');\n\n $savedSearch = $this->makeSavedSearch([$filter1, $filter2]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesScalarFilters(): void\n {\n $user = $this->makeUser();\n\n $filter = $this->makeFilter('direction', 'inbound');\n $savedSearch = $this->makeSavedSearch([$filter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-5'], $result);\n }\n\n public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertFalse($capturedCriteria->isFirstRequest());\n }\n\n public function testGetActivityIdsLogsWithCorrectContext(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with(\n '[AskJiminnyReport] Fetched activity IDs for saved search',\n $this->callback(fn ($context) => $context['saved_search_id'] === 42\n && $context['user_id'] === 1\n && $context['activity_count'] === 2)\n );\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n }\n}","depth":4,"bounds":{"left":0.490625,"top":0.12777779,"width":0.3347656,"height":0.8722222},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AskJiminnyReportActivityService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse PHPUnit\\Framework\\TestCase;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityServiceTest extends TestCase\n{\n private ActivitySearch&MockObject $activitySearch;\n private ElasticActivityRepository&MockObject $elasticRepository;\n private LoggerInterface&MockObject $logger;\n private AskJiminnyReportActivityService $service;\n\n protected function setUp(): void\n {\n $this->activitySearch = $this->createMock(ActivitySearch::class);\n $this->elasticRepository = $this->createMock(ElasticActivityRepository::class);\n $this->logger = $this->createMock(LoggerInterface::class);\n\n $this->service = new AskJiminnyReportActivityService(\n $this->activitySearch,\n $this->elasticRepository,\n $this->logger,\n );\n }\n\n private function makeFilter(string $key, ?string $value): SearchFilter&MockObject\n {\n $filter = $this->createMock(SearchFilter::class);\n $filter->method('getFilterProperty')->willReturn($key);\n $filter->method('getFilterValue')->willReturn($value);\n\n return $filter;\n }\n\n private function makeUser(): User&MockObject\n {\n $tz = new \\DateTimeZone('UTC');\n $user = $this->createMock(User::class);\n $user->method('getTimezone')->willReturn($tz);\n $user->method('getId')->willReturn(1);\n $user->method('getUuid')->willReturn('user-uuid');\n\n return $user;\n }\n\n private function makeSavedSearch(array $filters): Search&MockObject\n {\n $savedSearch = $this->createMock(Search::class);\n $savedSearch->method('getId')->willReturn(42);\n $savedSearch->method('getFilters')->willReturn(new \\Illuminate\\Support\\LazyCollection($filters));\n\n return $savedSearch;\n }\n\n public function testGetActivityIdsForSavedSearchReturnsIds(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->expects($this->once())\n ->method('getArrayFilterKeys')\n ->with($user)\n ->willReturn([]);\n\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n\n $this->elasticRepository->expects($this->once())\n ->method('onDemandSearchIdsOnly')\n ->willReturn(['id-1', 'id-2', 'id-3']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with('[AskJiminnyReport] Fetched activity IDs for saved search');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1', 'id-2', 'id-3'], $result);\n }\n\n public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $this->logger->expects($this->once())->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEmpty($result);\n }\n\n public function testGetActivityIdsFiltersOutDateFilters(): void\n {\n $user = $this->makeUser();\n\n $nonDateFilter = $this->makeFilter('owner_id', '123');\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');\n $updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');\n $updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');\n\n $savedSearch = $this->makeSavedSearch([\n $nonDateFilter,\n $startDateFilter,\n $endDateFilter,\n $updatedFromFilter,\n $updatedToFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n }\n\n public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void\n {\n $user = $this->makeUser();\n\n $closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');\n $closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');\n $regularFilter = $this->makeFilter('rep_id', '99');\n\n $savedSearch = $this->makeSavedSearch([\n $closingStartFilter,\n $closingEndFilter,\n $regularFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesArrayFilters(): void\n {\n $user = $this->makeUser();\n\n $filter1 = $this->makeFilter('outcome', 'positive');\n $filter2 = $this->makeFilter('outcome', 'negative');\n\n $savedSearch = $this->makeSavedSearch([$filter1, $filter2]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesScalarFilters(): void\n {\n $user = $this->makeUser();\n\n $filter = $this->makeFilter('direction', 'inbound');\n $savedSearch = $this->makeSavedSearch([$filter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-5'], $result);\n }\n\n public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertFalse($capturedCriteria->isFirstRequest());\n }\n\n public function testGetActivityIdsLogsWithCorrectContext(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with(\n '[AskJiminnyReport] Fetched activity IDs for saved search',\n $this->callback(fn ($context) => $context['saved_search_id'] === 42\n && $context['user_id'] === 1\n && $context['activity_count'] === 2)\n );\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n }\n}","role_description":"text entry area","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":"15","depth":4,"bounds":{"left":0.4234375,"top":0.1736111,"width":0.011328125,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.43710938,"top":0.1736111,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.4484375,"top":0.17222223,"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.45703125,"top":0.17222223,"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\\Repositories;\n\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Pagination\\LengthAwarePaginator;\nuse Illuminate\\Support\\Facades\\DB;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSort;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSortDirection;\n\nclass AutomatedReportsRepository\n{\n /**\n * Create a new automated report\n *\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function create(array $data): AutomatedReport\n {\n return AutomatedReport::create($data);\n }\n\n /**\n * Find an automated report by UUID\n *\n * @param string $uuid\n *\n * @return AutomatedReport|null\n */\n public function findByUuid(string $uuid): ?AutomatedReport\n {\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();\n }\n\n public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport\n {\n if (is_numeric($idOrUuid)) {\n return AutomatedReport::find((int) $idOrUuid);\n }\n\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();\n }\n\n /**\n * Retrieve all standard (non-Ask Jiminny) automated reports.\n *\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAllStandardReports(\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->get();\n }\n\n /**\n * Retrieve all Ask Jiminny reports created by the given user.\n *\n * @param User $user The user whose reports to retrieve.\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAskJiminnyReportsByUser(\n User $user,\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->where('created_by', $user->getId())\n ->get();\n }\n\n private function buildSortedQuery(string $sortColumn, string $sortDirection): \\Illuminate\\Database\\Eloquent\\Builder\n {\n $allowedColumns = ['created_by', 'created_at'];\n if (! in_array($sortColumn, $allowedColumns)) {\n $sortColumn = 'created_at';\n }\n\n $sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';\n\n $query = AutomatedReport::query()->with(['creator', 'team']);\n\n if ($sortColumn === 'created_by') {\n $query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')\n ->orderByRaw(\"users.name COLLATE utf8mb4_unicode_ci {$sortDirection}\")\n ->select('automated_reports.*');\n } else {\n $query->orderBy($sortColumn, $sortDirection);\n }\n\n return $query;\n }\n\n /**\n * Get all active and enabled reports with active teams for the specified frequency.\n *\n * @param string $frequency\n *\n * @return Collection<AutomatedReport>\n */\n public function getActiveReportsByFrequency(string $frequency): Collection\n {\n return AutomatedReport::where('automated_reports.status', true)\n ->where('automated_reports.frequency', $frequency)\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->where('teams.status', Team::STATUS_ACTIVE)\n ->where(function ($query) {\n $query->whereNull('automated_reports.expires_at')\n ->orWhere('automated_reports.expires_at', '>=', now()->toDateString());\n })\n ->select('automated_reports.*')\n ->get();\n }\n\n /**\n * Update an automated report\n *\n * @param AutomatedReport $report\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function update(AutomatedReport $report, array $data): AutomatedReport\n {\n $report->update($data);\n\n return $report;\n }\n\n /**\n * Create a new automated report result.\n *\n * @param array $data The data to create the automated report result with.\n *\n * @return AutomatedReportResult The newly created automated report result.\n */\n public function createResult(array $data): AutomatedReportResult\n {\n return AutomatedReportResult::create($data);\n }\n\n /**\n * Find an automated report result by UUID.\n *\n * @param string $uuid The UUID to find the automated report result with.\n *\n * @return AutomatedReportResult|null The automated report result if found, otherwise null.\n */\n public function findResultByUuid(string $uuid): ?AutomatedReportResult\n {\n return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();\n }\n\n public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('uuid', AutomatedReportResult::toOptimized($uuid))\n ->whereHas('report', static function ($query) use ($user): void {\n $query->where('team_id', $user->getTeamId())\n ->where('created_by', $user->getId());\n })\n ->first();\n }\n\n public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('parent_id', $result->getId())\n ->where('media_type', $type)\n ->first();\n }\n\n public function getGeneratedNotSentResults(): Collection\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNull('sent_at')\n ->where('status', AutomatedReportResult::STATUS_GENERATED)\n ->whereHas('report')\n ->with('report')\n ->get();\n }\n\n public function getPaginatedUserReports(\n User $user,\n ReportSort $sort,\n ReportSortDirection $sortDirection,\n int $resultsPerPage,\n int $page,\n ?Carbon $fromDate,\n ?Carbon $toDate,\n array $teamIds,\n array $reportTypes,\n ?string $name,\n ): LengthAwarePaginator {\n $query = AutomatedReportResult::query()\n ->whereNotNull('automated_report_results.generated_at')\n ->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')\n ->where('automated_reports.team_id', $user->getTeamId())\n ->whereJsonContains('automated_reports.recipients->users', $user->getId())\n ->orderByRaw(\"$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}\")\n ->select('automated_report_results.*')\n ->with('report.team');\n\n if ($fromDate !== null && $toDate !== null) {\n $query->whereBetween('generated_at', [$fromDate, $toDate]);\n }\n\n if (! empty($teamIds)) {\n $query->where(function ($q) use ($teamIds) {\n foreach ($teamIds as $id) {\n $q->orWhereJsonContains('automated_reports.groups', $id);\n }\n });\n }\n\n if (! empty($reportTypes)) {\n $query->whereIn('automated_reports.type', $reportTypes);\n }\n\n if (! empty($name)) {\n $query->whereLike('name', \"%$name%\");\n }\n\n return $query->paginate($resultsPerPage, ['*'], 'page', $page);\n }\n\n public function countUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNotNull('sent_at')\n ->whereHas('report', function ($q) use ($user) {\n $q->where('team_id', $user->getTeamId())\n ->whereJsonContains('recipients->users', $user->getId());\n })\n ->count();\n }\n\n /**\n * Get report IDs for a specific team\n *\n * @param Team $team\n *\n * @return \\Illuminate\\Support\\Collection\n */\n public function getReportIdsByTeam(Team $team): \\Illuminate\\Support\\Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->pluck('id');\n }\n\n /**\n * Get all reports for a specific team\n *\n * @param Team $team\n *\n * @return Collection\n */\n public function getReportsByTeam(Team $team): Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->get();\n }\n\n /**\n * Get all report results for a specific report\n *\n * @param AutomatedReport $report\n *\n * @return Collection\n */\n public function getResultsByReport(AutomatedReport $report): Collection\n {\n return $this->getResultsByReportQuery($report)->get();\n }\n\n public function getResultsByReportQuery(AutomatedReport $report): Builder\n {\n return AutomatedReportResult::where('report_id', $report->getId());\n }\n\n public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder\n {\n $reportIds = $this->getReportIdsByTeam($team);\n\n return AutomatedReportResult::query()->whereIn('report_id', $reportIds)\n ->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);\n }\n\n /**\n * @param int|null $teamId Optional team ID to filter results\n *\n * @return \\Illuminate\\Support\\Collection<int, int> Collection of team IDs\n */\n public function getTeamIdsWithReportsResults(?int $teamId = null): \\Illuminate\\Support\\Collection\n {\n $query = DB::table('automated_reports')\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->select('teams.id')\n ->distinct();\n\n if ($teamId !== null) {\n $query->where('teams.id', $teamId);\n }\n\n return $query->pluck('teams.id');\n }\n}","depth":4,"bounds":{"left":0.15234375,"top":0.0,"width":0.39882812,"height":1.0},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Repositories;\n\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Pagination\\LengthAwarePaginator;\nuse Illuminate\\Support\\Facades\\DB;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSort;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSortDirection;\n\nclass AutomatedReportsRepository\n{\n /**\n * Create a new automated report\n *\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function create(array $data): AutomatedReport\n {\n return AutomatedReport::create($data);\n }\n\n /**\n * Find an automated report by UUID\n *\n * @param string $uuid\n *\n * @return AutomatedReport|null\n */\n public function findByUuid(string $uuid): ?AutomatedReport\n {\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();\n }\n\n public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport\n {\n if (is_numeric($idOrUuid)) {\n return AutomatedReport::find((int) $idOrUuid);\n }\n\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();\n }\n\n /**\n * Retrieve all standard (non-Ask Jiminny) automated reports.\n *\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAllStandardReports(\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->get();\n }\n\n /**\n * Retrieve all Ask Jiminny reports created by the given user.\n *\n * @param User $user The user whose reports to retrieve.\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAskJiminnyReportsByUser(\n User $user,\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->where('created_by', $user->getId())\n ->get();\n }\n\n private function buildSortedQuery(string $sortColumn, string $sortDirection): \\Illuminate\\Database\\Eloquent\\Builder\n {\n $allowedColumns = ['created_by', 'created_at'];\n if (! in_array($sortColumn, $allowedColumns)) {\n $sortColumn = 'created_at';\n }\n\n $sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';\n\n $query = AutomatedReport::query()->with(['creator', 'team']);\n\n if ($sortColumn === 'created_by') {\n $query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')\n ->orderByRaw(\"users.name COLLATE utf8mb4_unicode_ci {$sortDirection}\")\n ->select('automated_reports.*');\n } else {\n $query->orderBy($sortColumn, $sortDirection);\n }\n\n return $query;\n }\n\n /**\n * Get all active and enabled reports with active teams for the specified frequency.\n *\n * @param string $frequency\n *\n * @return Collection<AutomatedReport>\n */\n public function getActiveReportsByFrequency(string $frequency): Collection\n {\n return AutomatedReport::where('automated_reports.status', true)\n ->where('automated_reports.frequency', $frequency)\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->where('teams.status', Team::STATUS_ACTIVE)\n ->where(function ($query) {\n $query->whereNull('automated_reports.expires_at')\n ->orWhere('automated_reports.expires_at', '>=', now()->toDateString());\n })\n ->select('automated_reports.*')\n ->get();\n }\n\n /**\n * Update an automated report\n *\n * @param AutomatedReport $report\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function update(AutomatedReport $report, array $data): AutomatedReport\n {\n $report->update($data);\n\n return $report;\n }\n\n /**\n * Create a new automated report result.\n *\n * @param array $data The data to create the automated report result with.\n *\n * @return AutomatedReportResult The newly created automated report result.\n */\n public function createResult(array $data): AutomatedReportResult\n {\n return AutomatedReportResult::create($data);\n }\n\n /**\n * Find an automated report result by UUID.\n *\n * @param string $uuid The UUID to find the automated report result with.\n *\n * @return AutomatedReportResult|null The automated report result if found, otherwise null.\n */\n public function findResultByUuid(string $uuid): ?AutomatedReportResult\n {\n return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();\n }\n\n public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('uuid', AutomatedReportResult::toOptimized($uuid))\n ->whereHas('report', static function ($query) use ($user): void {\n $query->where('team_id', $user->getTeamId())\n ->where('created_by', $user->getId());\n })\n ->first();\n }\n\n public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('parent_id', $result->getId())\n ->where('media_type', $type)\n ->first();\n }\n\n public function getGeneratedNotSentResults(): Collection\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNull('sent_at')\n ->where('status', AutomatedReportResult::STATUS_GENERATED)\n ->whereHas('report')\n ->with('report')\n ->get();\n }\n\n public function getPaginatedUserReports(\n User $user,\n ReportSort $sort,\n ReportSortDirection $sortDirection,\n int $resultsPerPage,\n int $page,\n ?Carbon $fromDate,\n ?Carbon $toDate,\n array $teamIds,\n array $reportTypes,\n ?string $name,\n ): LengthAwarePaginator {\n $query = AutomatedReportResult::query()\n ->whereNotNull('automated_report_results.generated_at')\n ->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')\n ->where('automated_reports.team_id', $user->getTeamId())\n ->whereJsonContains('automated_reports.recipients->users', $user->getId())\n ->orderByRaw(\"$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}\")\n ->select('automated_report_results.*')\n ->with('report.team');\n\n if ($fromDate !== null && $toDate !== null) {\n $query->whereBetween('generated_at', [$fromDate, $toDate]);\n }\n\n if (! empty($teamIds)) {\n $query->where(function ($q) use ($teamIds) {\n foreach ($teamIds as $id) {\n $q->orWhereJsonContains('automated_reports.groups', $id);\n }\n });\n }\n\n if (! empty($reportTypes)) {\n $query->whereIn('automated_reports.type', $reportTypes);\n }\n\n if (! empty($name)) {\n $query->whereLike('name', \"%$name%\");\n }\n\n return $query->paginate($resultsPerPage, ['*'], 'page', $page);\n }\n\n public function countUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNotNull('sent_at')\n ->whereHas('report', function ($q) use ($user) {\n $q->where('team_id', $user->getTeamId())\n ->whereJsonContains('recipients->users', $user->getId());\n })\n ->count();\n }\n\n /**\n * Get report IDs for a specific team\n *\n * @param Team $team\n *\n * @return \\Illuminate\\Support\\Collection\n */\n public function getReportIdsByTeam(Team $team): \\Illuminate\\Support\\Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->pluck('id');\n }\n\n /**\n * Get all reports for a specific team\n *\n * @param Team $team\n *\n * @return Collection\n */\n public function getReportsByTeam(Team $team): Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->get();\n }\n\n /**\n * Get all report results for a specific report\n *\n * @param AutomatedReport $report\n *\n * @return Collection\n */\n public function getResultsByReport(AutomatedReport $report): Collection\n {\n return $this->getResultsByReportQuery($report)->get();\n }\n\n public function getResultsByReportQuery(AutomatedReport $report): Builder\n {\n return AutomatedReportResult::where('report_id', $report->getId());\n }\n\n public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder\n {\n $reportIds = $this->getReportIdsByTeam($team);\n\n return AutomatedReportResult::query()->whereIn('report_id', $reportIds)\n ->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);\n }\n\n /**\n * @param int|null $teamId Optional team ID to filter results\n *\n * @return \\Illuminate\\Support\\Collection<int, int> Collection of team IDs\n */\n public function getTeamIdsWithReportsResults(?int $teamId = null): \\Illuminate\\Support\\Collection\n {\n $query = DB::table('automated_reports')\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->select('teams.id')\n ->distinct();\n\n if ($teamId !== null) {\n $query->where('teams.id', $teamId);\n }\n\n return $query->pluck('teams.id');\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.0140625,"top":0.041666668,"width":0.028515626,"height":0.021527778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","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":"AXButton","text":"Expand Selected","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":"AXButton","text":"Collapse All","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":"AXButton","text":"Options","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":"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}]...
|
8932460332387265586
|
-8276790037575160524
|
visual_change
|
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
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityServiceTest extends TestCase
{
private ActivitySearch&MockObject $activitySearch;
private ElasticActivityRepository&MockObject $elasticRepository;
private LoggerInterface&MockObject $logger;
private AskJiminnyReportActivityService $service;
protected function setUp(): void
{
$this->activitySearch = $this->createMock(ActivitySearch::class);
$this->elasticRepository = $this->createMock(ElasticActivityRepository::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->service = new AskJiminnyReportActivityService(
$this->activitySearch,
$this->elasticRepository,
$this->logger,
);
}
private function makeFilter(string $key, ?string $value): SearchFilter&MockObject
{
$filter = $this->createMock(SearchFilter::class);
$filter->method('getFilterProperty')->willReturn($key);
$filter->method('getFilterValue')->willReturn($value);
return $filter;
}
private function makeUser(): User&MockObject
{
$tz = new \DateTimeZone('UTC');
$user = $this->createMock(User::class);
$user->method('getTimezone')->willReturn($tz);
$user->method('getId')->willReturn(1);
$user->method('getUuid')->willReturn('user-uuid');
return $user;
}
private function makeSavedSearch(array $filters): Search&MockObject
{
$savedSearch = $this->createMock(Search::class);
$savedSearch->method('getId')->willReturn(42);
$savedSearch->method('getFilters')->willReturn(new \Illuminate\Support\LazyCollection($filters));
return $savedSearch;
}
public function testGetActivityIdsForSavedSearchReturnsIds(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->expects($this->once())
->method('getArrayFilterKeys')
->with($user)
->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->expects($this->once())
->method('onDemandSearchIdsOnly')
->willReturn(['id-1', 'id-2', 'id-3']);
$this->logger->expects($this->once())
->method('info')
->with('[AskJiminnyReport] Fetched activity IDs for saved search');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1', 'id-2', 'id-3'], $result);
}
public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->expects($this->once())->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEmpty($result);
}
public function testGetActivityIdsFiltersOutDateFilters(): void
{
$user = $this->makeUser();
$nonDateFilter = $this->makeFilter('owner_id', '123');
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');
$updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');
$updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');
$savedSearch = $this->makeSavedSearch([
$nonDateFilter,
$startDateFilter,
$endDateFilter,
$updatedFromFilter,
$updatedToFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
}
public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void
{
$user = $this->makeUser();
$closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');
$closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');
$regularFilter = $this->makeFilter('rep_id', '99');
$savedSearch = $this->makeSavedSearch([
$closingStartFilter,
$closingEndFilter,
$regularFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesArrayFilters(): void
{
$user = $this->makeUser();
$filter1 = $this->makeFilter('outcome', 'positive');
$filter2 = $this->makeFilter('outcome', 'negative');
$savedSearch = $this->makeSavedSearch([$filter1, $filter2]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesScalarFilters(): void
{
$user = $this->makeUser();
$filter = $this->makeFilter('direction', 'inbound');
$savedSearch = $this->makeSavedSearch([$filter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-5'], $result);
}
public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
$this->assertFalse($capturedCriteria->isFirstRequest());
}
public function testGetActivityIdsLogsWithCorrectContext(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);
$this->logger->expects($this->once())
->method('info')
->with(
'[AskJiminnyReport] Fetched activity IDs for saved search',
$this->callback(fn ($context) => $context['saved_search_id'] === 42
&& $context['user_id'] === 1
&& $context['activity_count'] === 2)
);
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
15
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Repositories;
use Carbon\CarbonImmutable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
class AutomatedReportsRepository
{
/**
* Create a new automated report
*
* @param array $data
*
* @return AutomatedReport
*/
public function create(array $data): AutomatedReport
{
return AutomatedReport::create($data);
}
/**
* Find an automated report by UUID
*
* @param string $uuid
*
* @return AutomatedReport|null
*/
public function findByUuid(string $uuid): ?AutomatedReport
{
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();
}
public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport
{
if (is_numeric($idOrUuid)) {
return AutomatedReport::find((int) $idOrUuid);
}
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();
}
/**
* Retrieve all standard (non-Ask Jiminny) automated reports.
*
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAllStandardReports(
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->get();
}
/**
* Retrieve all Ask Jiminny reports created by the given user.
*
* @param User $user The user whose reports to retrieve.
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAskJiminnyReportsByUser(
User $user,
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->where('created_by', $user->getId())
->get();
}
private function buildSortedQuery(string $sortColumn, string $sortDirection): \Illuminate\Database\Eloquent\Builder
{
$allowedColumns = ['created_by', 'created_at'];
if (! in_array($sortColumn, $allowedColumns)) {
$sortColumn = 'created_at';
}
$sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';
$query = AutomatedReport::query()->with(['creator', 'team']);
if ($sortColumn === 'created_by') {
$query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')
->orderByRaw("users.name COLLATE utf8mb4_unicode_ci {$sortDirection}")
->select('automated_reports.*');
} else {
$query->orderBy($sortColumn, $sortDirection);
}
return $query;
}
/**
* Get all active and enabled reports with active teams for the specified frequency.
*
* @param string $frequency
*
* @return Collection<AutomatedReport>
*/
public function getActiveReportsByFrequency(string $frequency): Collection
{
return AutomatedReport::where('automated_reports.status', true)
->where('automated_reports.frequency', $frequency)
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->where('teams.status', Team::STATUS_ACTIVE)
->where(function ($query) {
$query->whereNull('automated_reports.expires_at')
->orWhere('automated_reports.expires_at', '>=', now()->toDateString());
})
->select('automated_reports.*')
->get();
}
/**
* Update an automated report
*
* @param AutomatedReport $report
* @param array $data
*
* @return AutomatedReport
*/
public function update(AutomatedReport $report, array $data): AutomatedReport
{
$report->update($data);
return $report;
}
/**
* Create a new automated report result.
*
* @param array $data The data to create the automated report result with.
*
* @return AutomatedReportResult The newly created automated report result.
*/
public function createResult(array $data): AutomatedReportResult
{
return AutomatedReportResult::create($data);
}
/**
* Find an automated report result by UUID.
*
* @param string $uuid The UUID to find the automated report result with.
*
* @return AutomatedReportResult|null The automated report result if found, otherwise null.
*/
public function findResultByUuid(string $uuid): ?AutomatedReportResult
{
return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();
}
public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('uuid', AutomatedReportResult::toOptimized($uuid))
->whereHas('report', static function ($query) use ($user): void {
$query->where('team_id', $user->getTeamId())
->where('created_by', $user->getId());
})
->first();
}
public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('parent_id', $result->getId())
->where('media_type', $type)
->first();
}
public function getGeneratedNotSentResults(): Collection
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNull('sent_at')
->where('status', AutomatedReportResult::STATUS_GENERATED)
->whereHas('report')
->with('report')
->get();
}
public function getPaginatedUserReports(
User $user,
ReportSort $sort,
ReportSortDirection $sortDirection,
int $resultsPerPage,
int $page,
?Carbon $fromDate,
?Carbon $toDate,
array $teamIds,
array $reportTypes,
?string $name,
): LengthAwarePaginator {
$query = AutomatedReportResult::query()
->whereNotNull('automated_report_results.generated_at')
->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')
->where('automated_reports.team_id', $user->getTeamId())
->whereJsonContains('automated_reports.recipients->users', $user->getId())
->orderByRaw("$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}")
->select('automated_report_results.*')
->with('report.team');
if ($fromDate !== null && $toDate !== null) {
$query->whereBetween('generated_at', [$fromDate, $toDate]);
}
if (! empty($teamIds)) {
$query->where(function ($q) use ($teamIds) {
foreach ($teamIds as $id) {
$q->orWhereJsonContains('automated_reports.groups', $id);
}
});
}
if (! empty($reportTypes)) {
$query->whereIn('automated_reports.type', $reportTypes);
}
if (! empty($name)) {
$query->whereLike('name', "%$name%");
}
return $query->paginate($resultsPerPage, ['*'], 'page', $page);
}
public function countUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNotNull('sent_at')
->whereHas('report', function ($q) use ($user) {
$q->where('team_id', $user->getTeamId())
->whereJsonContains('recipients->users', $user->getId());
})
->count();
}
/**
* Get report IDs for a specific team
*
* @param Team $team
*
* @return \Illuminate\Support\Collection
*/
public function getReportIdsByTeam(Team $team): \Illuminate\Support\Collection
{
return AutomatedReport::where('team_id', $team->getId())->pluck('id');
}
/**
* Get all reports for a specific team
*
* @param Team $team
*
* @return Collection
*/
public function getReportsByTeam(Team $team): Collection
{
return AutomatedReport::where('team_id', $team->getId())->get();
}
/**
* Get all report results for a specific report
*
* @param AutomatedReport $report
*
* @return Collection
*/
public function getResultsByReport(AutomatedReport $report): Collection
{
return $this->getResultsByReportQuery($report)->get();
}
public function getResultsByReportQuery(AutomatedReport $report): Builder
{
return AutomatedReportResult::where('report_id', $report->getId());
}
public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder
{
$reportIds = $this->getReportIdsByTeam($team);
return AutomatedReportResult::query()->whereIn('report_id', $reportIds)
->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);
}
/**
* @param int|null $teamId Optional team ID to filter results
*
* @return \Illuminate\Support\Collection<int, int> Collection of team IDs
*/
public function getTeamIdsWithReportsResults(?int $teamId = null): \Illuminate\Support\Collection
{
$query = DB::table('automated_reports')
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->select('teams.id')
->distinct();
if ($teamId !== null) {
$query->where('teams.id', $teamId);
}
return $query->pluck('teams.id');
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
10972
|
216
|
21
|
2026-04-14T09:06:17.426345+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157577426_m1.jpg...
|
PhpStorm
|
faVsco.js – AskJiminnyReportActivityServiceTest.ph faVsco.js – AskJiminnyReportActivityServiceTest.php...
|
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
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityServiceTest extends TestCase
{
private ActivitySearch&MockObject $activitySearch;
private ElasticActivityRepository&MockObject $elasticRepository;
private LoggerInterface&MockObject $logger;
private AskJiminnyReportActivityService $service;
protected function setUp(): void
{
$this->activitySearch = $this->createMock(ActivitySearch::class);
$this->elasticRepository = $this->createMock(ElasticActivityRepository::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->service = new AskJiminnyReportActivityService(
$this->activitySearch,
$this->elasticRepository,
$this->logger,
);
}
private function makeFilter(string $key, ?string $value): SearchFilter&MockObject
{
$filter = $this->createMock(SearchFilter::class);
$filter->method('getFilterProperty')->willReturn($key);
$filter->method('getFilterValue')->willReturn($value);
return $filter;
}
private function makeUser(): User&MockObject
{
$tz = new \DateTimeZone('UTC');
$user = $this->createMock(User::class);
$user->method('getTimezone')->willReturn($tz);
$user->method('getId')->willReturn(1);
$user->method('getUuid')->willReturn('user-uuid');
return $user;
}
private function makeSavedSearch(array $filters): Search&MockObject
{
$savedSearch = $this->createMock(Search::class);
$savedSearch->method('getId')->willReturn(42);
$savedSearch->method('getFilters')->willReturn(new \Illuminate\Support\LazyCollection($filters));
return $savedSearch;
}
public function testGetActivityIdsForSavedSearchReturnsIds(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->expects($this->once())
->method('getArrayFilterKeys')
->with($user)
->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->expects($this->once())
->method('onDemandSearchIdsOnly')
->willReturn(['id-1', 'id-2', 'id-3']);
$this->logger->expects($this->once())
->method('info')
->with('[AskJiminnyReport] Fetched activity IDs for saved search');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1', 'id-2', 'id-3'], $result);
}
public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->expects($this->once())->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEmpty($result);
}
public function testGetActivityIdsFiltersOutDateFilters(): void
{
$user = $this->makeUser();
$nonDateFilter = $this->makeFilter('owner_id', '123');
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');
$updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');
$updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');
$savedSearch = $this->makeSavedSearch([
$nonDateFilter,
$startDateFilter,
$endDateFilter,
$updatedFromFilter,
$updatedToFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
}
public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void
{
$user = $this->makeUser();
$closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');
$closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');
$regularFilter = $this->makeFilter('rep_id', '99');
$savedSearch = $this->makeSavedSearch([
$closingStartFilter,
$closingEndFilter,
$regularFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesArrayFilters(): void
{
$user = $this->makeUser();
$filter1 = $this->makeFilter('outcome', 'positive');
$filter2 = $this->makeFilter('outcome', 'negative');
$savedSearch = $this->makeSavedSearch([$filter1, $filter2]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesScalarFilters(): void
{
$user = $this->makeUser();
$filter = $this->makeFilter('direction', 'inbound');
$savedSearch = $this->makeSavedSearch([$filter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-5'], $result);
}
public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
$this->assertFalse($capturedCriteria->isFirstRequest());
}
public function testGetActivityIdsLogsWithCorrectContext(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);
$this->logger->expects($this->once())
->method('info')
->with(
'[AskJiminnyReport] Fetched activity IDs for saved search',
$this->callback(fn ($context) => $context['saved_search_id'] === 42
&& $context['user_id'] === 1
&& $context['activity_count'] === 2)
);
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
15
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Repositories;
use Carbon\CarbonImmutable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
class AutomatedReportsRepository
{
/**
* Create a new automated report
*
* @param array $data
*
* @return AutomatedReport
*/
public function create(array $data): AutomatedReport
{
return AutomatedReport::create($data);
}
/**
* Find an automated report by UUID
*
* @param string $uuid
*
* @return AutomatedReport|null
*/
public function findByUuid(string $uuid): ?AutomatedReport
{
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();
}
public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport
{
if (is_numeric($idOrUuid)) {
return AutomatedReport::find((int) $idOrUuid);
}
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();
}
/**
* Retrieve all standard (non-Ask Jiminny) automated reports.
*
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAllStandardReports(
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->get();
}
/**
* Retrieve all Ask Jiminny reports created by the given user.
*
* @param User $user The user whose reports to retrieve.
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAskJiminnyReportsByUser(
User $user,
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->where('created_by', $user->getId())
->get();
}
private function buildSortedQuery(string $sortColumn, string $sortDirection): \Illuminate\Database\Eloquent\Builder
{
$allowedColumns = ['created_by', 'created_at'];
if (! in_array($sortColumn, $allowedColumns)) {
$sortColumn = 'created_at';
}
$sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';
$query = AutomatedReport::query()->with(['creator', 'team']);
if ($sortColumn === 'created_by') {
$query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')
->orderByRaw("users.name COLLATE utf8mb4_unicode_ci {$sortDirection}")
->select('automated_reports.*');
} else {
$query->orderBy($sortColumn, $sortDirection);
}
return $query;
}
/**
* Get all active and enabled reports with active teams for the specified frequency.
*
* @param string $frequency
*
* @return Collection<AutomatedReport>
*/
public function getActiveReportsByFrequency(string $frequency): Collection
{
return AutomatedReport::where('automated_reports.status', true)
->where('automated_reports.frequency', $frequency)
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->where('teams.status', Team::STATUS_ACTIVE)
->where(function ($query) {
$query->whereNull('automated_reports.expires_at')
->orWhere('automated_reports.expires_at', '>=', now()->toDateString());
})
->select('automated_reports.*')
->get();
}
/**
* Update an automated report
*
* @param AutomatedReport $report
* @param array $data
*
* @return AutomatedReport
*/
public function update(AutomatedReport $report, array $data): AutomatedReport
{
$report->update($data);
return $report;
}
/**
* Create a new automated report result.
*
* @param array $data The data to create the automated report result with.
*
* @return AutomatedReportResult The newly created automated report result.
*/
public function createResult(array $data): AutomatedReportResult
{
return AutomatedReportResult::create($data);
}
/**
* Find an automated report result by UUID.
*
* @param string $uuid The UUID to find the automated report result with.
*
* @return AutomatedReportResult|null The automated report result if found, otherwise null.
*/
public function findResultByUuid(string $uuid): ?AutomatedReportResult
{
return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();
}
public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('uuid', AutomatedReportResult::toOptimized($uuid))
->whereHas('report', static function ($query) use ($user): void {
$query->where('team_id', $user->getTeamId())
->where('created_by', $user->getId());
})
->first();
}
public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('parent_id', $result->getId())
->where('media_type', $type)
->first();
}
public function getGeneratedNotSentResults(): Collection
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNull('sent_at')
->where('status', AutomatedReportResult::STATUS_GENERATED)
->whereHas('report')
->with('report')
->get();
}
public function getPaginatedUserReports(
User $user,
ReportSort $sort,
ReportSortDirection $sortDirection,
int $resultsPerPage,
int $page,
?Carbon $fromDate,
?Carbon $toDate,
array $teamIds,
array $reportTypes,
?string $name,
): LengthAwarePaginator {
$query = AutomatedReportResult::query()
->whereNotNull('automated_report_results.generated_at')
->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')
->where('automated_reports.team_id', $user->getTeamId())
->whereJsonContains('automated_reports.recipients->users', $user->getId())
->orderByRaw("$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}")
->select('automated_report_results.*')
->with('report.team');
if ($fromDate !== null && $toDate !== null) {
$query->whereBetween('generated_at', [$fromDate, $toDate]);
}
if (! empty($teamIds)) {
$query->where(function ($q) use ($teamIds) {
foreach ($teamIds as $id) {
$q->orWhereJsonContains('automated_reports.groups', $id);
}
});
}
if (! empty($reportTypes)) {
$query->whereIn('automated_reports.type', $reportTypes);
}
if (! empty($name)) {
$query->whereLike('name', "%$name%");
}
return $query->paginate($resultsPerPage, ['*'], 'page', $page);
}
public function countUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNotNull('sent_at')
->whereHas('report', function ($q) use ($user) {
$q->where('team_id', $user->getTeamId())
->whereJsonContains('recipients->users', $user->getId());
})
->count();
}
/**
* Get report IDs for a specific team
*
* @param Team $team
*
* @return \Illuminate\Support\Collection
*/
public function getReportIdsByTeam(Team $team): \Illuminate\Support\Collection
{
return AutomatedReport::where('team_id', $team->getId())->pluck('id');
}
/**
* Get all reports for a specific team
*
* @param Team $team
*
* @return Collection
*/
public function getReportsByTeam(Team $team): Collection
{
return AutomatedReport::where('team_id', $team->getId())->get();
}
/**
* Get all report results for a specific report
*
* @param AutomatedReport $report
*
* @return Collection
*/
public function getResultsByReport(AutomatedReport $report): Collection
{
return $this->getResultsByReportQuery($report)->get();
}
public function getResultsByReportQuery(AutomatedReport $report): Builder
{
return AutomatedReportResult::where('report_id', $report->getId());
}
public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder
{
$reportIds = $this->getReportIdsByTeam($team);
return AutomatedReportResult::query()->whereIn('report_id', $reportIds)
->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);
}
/**
* @param int|null $teamId Optional team ID to filter results
*
* @return \Illuminate\Support\Collection<int, int> Collection of team IDs
*/
public function getTeamIdsWithReportsResults(?int $teamId = null): \Illuminate\Support\Collection
{
$query = DB::table('automated_reports')
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->select('teams.id')
->distinct();
if ($teamId !== null) {
$query->where('teams.id', $teamId);
}
return $query->pluck('teams.id');
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"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":"RequestGenerateAskJiminnyReportJobTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'RequestGenerateAskJiminnyReportJobTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'RequestGenerateAskJiminnyReportJobTest'","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,"bounds":{"left":0.0,"top":0.0,"width":0.016666668,"height":0.02111111},"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.016666668,"height":0.02111111},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.025555555},"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.0,"top":0.0,"width":0.014583333,"height":0.025555555},"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 Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AskJiminnyReportActivityService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse PHPUnit\\Framework\\TestCase;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityServiceTest extends TestCase\n{\n private ActivitySearch&MockObject $activitySearch;\n private ElasticActivityRepository&MockObject $elasticRepository;\n private LoggerInterface&MockObject $logger;\n private AskJiminnyReportActivityService $service;\n\n protected function setUp(): void\n {\n $this->activitySearch = $this->createMock(ActivitySearch::class);\n $this->elasticRepository = $this->createMock(ElasticActivityRepository::class);\n $this->logger = $this->createMock(LoggerInterface::class);\n\n $this->service = new AskJiminnyReportActivityService(\n $this->activitySearch,\n $this->elasticRepository,\n $this->logger,\n );\n }\n\n private function makeFilter(string $key, ?string $value): SearchFilter&MockObject\n {\n $filter = $this->createMock(SearchFilter::class);\n $filter->method('getFilterProperty')->willReturn($key);\n $filter->method('getFilterValue')->willReturn($value);\n\n return $filter;\n }\n\n private function makeUser(): User&MockObject\n {\n $tz = new \\DateTimeZone('UTC');\n $user = $this->createMock(User::class);\n $user->method('getTimezone')->willReturn($tz);\n $user->method('getId')->willReturn(1);\n $user->method('getUuid')->willReturn('user-uuid');\n\n return $user;\n }\n\n private function makeSavedSearch(array $filters): Search&MockObject\n {\n $savedSearch = $this->createMock(Search::class);\n $savedSearch->method('getId')->willReturn(42);\n $savedSearch->method('getFilters')->willReturn(new \\Illuminate\\Support\\LazyCollection($filters));\n\n return $savedSearch;\n }\n\n public function testGetActivityIdsForSavedSearchReturnsIds(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->expects($this->once())\n ->method('getArrayFilterKeys')\n ->with($user)\n ->willReturn([]);\n\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n\n $this->elasticRepository->expects($this->once())\n ->method('onDemandSearchIdsOnly')\n ->willReturn(['id-1', 'id-2', 'id-3']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with('[AskJiminnyReport] Fetched activity IDs for saved search');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1', 'id-2', 'id-3'], $result);\n }\n\n public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $this->logger->expects($this->once())->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEmpty($result);\n }\n\n public function testGetActivityIdsFiltersOutDateFilters(): void\n {\n $user = $this->makeUser();\n\n $nonDateFilter = $this->makeFilter('owner_id', '123');\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');\n $updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');\n $updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');\n\n $savedSearch = $this->makeSavedSearch([\n $nonDateFilter,\n $startDateFilter,\n $endDateFilter,\n $updatedFromFilter,\n $updatedToFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n }\n\n public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void\n {\n $user = $this->makeUser();\n\n $closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');\n $closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');\n $regularFilter = $this->makeFilter('rep_id', '99');\n\n $savedSearch = $this->makeSavedSearch([\n $closingStartFilter,\n $closingEndFilter,\n $regularFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesArrayFilters(): void\n {\n $user = $this->makeUser();\n\n $filter1 = $this->makeFilter('outcome', 'positive');\n $filter2 = $this->makeFilter('outcome', 'negative');\n\n $savedSearch = $this->makeSavedSearch([$filter1, $filter2]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesScalarFilters(): void\n {\n $user = $this->makeUser();\n\n $filter = $this->makeFilter('direction', 'inbound');\n $savedSearch = $this->makeSavedSearch([$filter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-5'], $result);\n }\n\n public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertFalse($capturedCriteria->isFirstRequest());\n }\n\n public function testGetActivityIdsLogsWithCorrectContext(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with(\n '[AskJiminnyReport] Fetched activity IDs for saved search',\n $this->callback(fn ($context) => $context['saved_search_id'] === 42\n && $context['user_id'] === 1\n && $context['activity_count'] === 2)\n );\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AskJiminnyReportActivityService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse PHPUnit\\Framework\\TestCase;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityServiceTest extends TestCase\n{\n private ActivitySearch&MockObject $activitySearch;\n private ElasticActivityRepository&MockObject $elasticRepository;\n private LoggerInterface&MockObject $logger;\n private AskJiminnyReportActivityService $service;\n\n protected function setUp(): void\n {\n $this->activitySearch = $this->createMock(ActivitySearch::class);\n $this->elasticRepository = $this->createMock(ElasticActivityRepository::class);\n $this->logger = $this->createMock(LoggerInterface::class);\n\n $this->service = new AskJiminnyReportActivityService(\n $this->activitySearch,\n $this->elasticRepository,\n $this->logger,\n );\n }\n\n private function makeFilter(string $key, ?string $value): SearchFilter&MockObject\n {\n $filter = $this->createMock(SearchFilter::class);\n $filter->method('getFilterProperty')->willReturn($key);\n $filter->method('getFilterValue')->willReturn($value);\n\n return $filter;\n }\n\n private function makeUser(): User&MockObject\n {\n $tz = new \\DateTimeZone('UTC');\n $user = $this->createMock(User::class);\n $user->method('getTimezone')->willReturn($tz);\n $user->method('getId')->willReturn(1);\n $user->method('getUuid')->willReturn('user-uuid');\n\n return $user;\n }\n\n private function makeSavedSearch(array $filters): Search&MockObject\n {\n $savedSearch = $this->createMock(Search::class);\n $savedSearch->method('getId')->willReturn(42);\n $savedSearch->method('getFilters')->willReturn(new \\Illuminate\\Support\\LazyCollection($filters));\n\n return $savedSearch;\n }\n\n public function testGetActivityIdsForSavedSearchReturnsIds(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->expects($this->once())\n ->method('getArrayFilterKeys')\n ->with($user)\n ->willReturn([]);\n\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n\n $this->elasticRepository->expects($this->once())\n ->method('onDemandSearchIdsOnly')\n ->willReturn(['id-1', 'id-2', 'id-3']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with('[AskJiminnyReport] Fetched activity IDs for saved search');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1', 'id-2', 'id-3'], $result);\n }\n\n public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $this->logger->expects($this->once())->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEmpty($result);\n }\n\n public function testGetActivityIdsFiltersOutDateFilters(): void\n {\n $user = $this->makeUser();\n\n $nonDateFilter = $this->makeFilter('owner_id', '123');\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');\n $updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');\n $updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');\n\n $savedSearch = $this->makeSavedSearch([\n $nonDateFilter,\n $startDateFilter,\n $endDateFilter,\n $updatedFromFilter,\n $updatedToFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n }\n\n public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void\n {\n $user = $this->makeUser();\n\n $closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');\n $closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');\n $regularFilter = $this->makeFilter('rep_id', '99');\n\n $savedSearch = $this->makeSavedSearch([\n $closingStartFilter,\n $closingEndFilter,\n $regularFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesArrayFilters(): void\n {\n $user = $this->makeUser();\n\n $filter1 = $this->makeFilter('outcome', 'positive');\n $filter2 = $this->makeFilter('outcome', 'negative');\n\n $savedSearch = $this->makeSavedSearch([$filter1, $filter2]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesScalarFilters(): void\n {\n $user = $this->makeUser();\n\n $filter = $this->makeFilter('direction', 'inbound');\n $savedSearch = $this->makeSavedSearch([$filter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-5'], $result);\n }\n\n public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertFalse($capturedCriteria->isFirstRequest());\n }\n\n public function testGetActivityIdsLogsWithCorrectContext(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with(\n '[AskJiminnyReport] Fetched activity IDs for saved search',\n $this->callback(fn ($context) => $context['saved_search_id'] === 42\n && $context['user_id'] === 1\n && $context['activity_count'] === 2)\n );\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n }\n}","role_description":"text entry area","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":"15","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"4","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\\Repositories;\n\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Pagination\\LengthAwarePaginator;\nuse Illuminate\\Support\\Facades\\DB;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSort;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSortDirection;\n\nclass AutomatedReportsRepository\n{\n /**\n * Create a new automated report\n *\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function create(array $data): AutomatedReport\n {\n return AutomatedReport::create($data);\n }\n\n /**\n * Find an automated report by UUID\n *\n * @param string $uuid\n *\n * @return AutomatedReport|null\n */\n public function findByUuid(string $uuid): ?AutomatedReport\n {\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();\n }\n\n public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport\n {\n if (is_numeric($idOrUuid)) {\n return AutomatedReport::find((int) $idOrUuid);\n }\n\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();\n }\n\n /**\n * Retrieve all standard (non-Ask Jiminny) automated reports.\n *\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAllStandardReports(\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->get();\n }\n\n /**\n * Retrieve all Ask Jiminny reports created by the given user.\n *\n * @param User $user The user whose reports to retrieve.\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAskJiminnyReportsByUser(\n User $user,\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->where('created_by', $user->getId())\n ->get();\n }\n\n private function buildSortedQuery(string $sortColumn, string $sortDirection): \\Illuminate\\Database\\Eloquent\\Builder\n {\n $allowedColumns = ['created_by', 'created_at'];\n if (! in_array($sortColumn, $allowedColumns)) {\n $sortColumn = 'created_at';\n }\n\n $sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';\n\n $query = AutomatedReport::query()->with(['creator', 'team']);\n\n if ($sortColumn === 'created_by') {\n $query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')\n ->orderByRaw(\"users.name COLLATE utf8mb4_unicode_ci {$sortDirection}\")\n ->select('automated_reports.*');\n } else {\n $query->orderBy($sortColumn, $sortDirection);\n }\n\n return $query;\n }\n\n /**\n * Get all active and enabled reports with active teams for the specified frequency.\n *\n * @param string $frequency\n *\n * @return Collection<AutomatedReport>\n */\n public function getActiveReportsByFrequency(string $frequency): Collection\n {\n return AutomatedReport::where('automated_reports.status', true)\n ->where('automated_reports.frequency', $frequency)\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->where('teams.status', Team::STATUS_ACTIVE)\n ->where(function ($query) {\n $query->whereNull('automated_reports.expires_at')\n ->orWhere('automated_reports.expires_at', '>=', now()->toDateString());\n })\n ->select('automated_reports.*')\n ->get();\n }\n\n /**\n * Update an automated report\n *\n * @param AutomatedReport $report\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function update(AutomatedReport $report, array $data): AutomatedReport\n {\n $report->update($data);\n\n return $report;\n }\n\n /**\n * Create a new automated report result.\n *\n * @param array $data The data to create the automated report result with.\n *\n * @return AutomatedReportResult The newly created automated report result.\n */\n public function createResult(array $data): AutomatedReportResult\n {\n return AutomatedReportResult::create($data);\n }\n\n /**\n * Find an automated report result by UUID.\n *\n * @param string $uuid The UUID to find the automated report result with.\n *\n * @return AutomatedReportResult|null The automated report result if found, otherwise null.\n */\n public function findResultByUuid(string $uuid): ?AutomatedReportResult\n {\n return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();\n }\n\n public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('uuid', AutomatedReportResult::toOptimized($uuid))\n ->whereHas('report', static function ($query) use ($user): void {\n $query->where('team_id', $user->getTeamId())\n ->where('created_by', $user->getId());\n })\n ->first();\n }\n\n public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('parent_id', $result->getId())\n ->where('media_type', $type)\n ->first();\n }\n\n public function getGeneratedNotSentResults(): Collection\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNull('sent_at')\n ->where('status', AutomatedReportResult::STATUS_GENERATED)\n ->whereHas('report')\n ->with('report')\n ->get();\n }\n\n public function getPaginatedUserReports(\n User $user,\n ReportSort $sort,\n ReportSortDirection $sortDirection,\n int $resultsPerPage,\n int $page,\n ?Carbon $fromDate,\n ?Carbon $toDate,\n array $teamIds,\n array $reportTypes,\n ?string $name,\n ): LengthAwarePaginator {\n $query = AutomatedReportResult::query()\n ->whereNotNull('automated_report_results.generated_at')\n ->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')\n ->where('automated_reports.team_id', $user->getTeamId())\n ->whereJsonContains('automated_reports.recipients->users', $user->getId())\n ->orderByRaw(\"$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}\")\n ->select('automated_report_results.*')\n ->with('report.team');\n\n if ($fromDate !== null && $toDate !== null) {\n $query->whereBetween('generated_at', [$fromDate, $toDate]);\n }\n\n if (! empty($teamIds)) {\n $query->where(function ($q) use ($teamIds) {\n foreach ($teamIds as $id) {\n $q->orWhereJsonContains('automated_reports.groups', $id);\n }\n });\n }\n\n if (! empty($reportTypes)) {\n $query->whereIn('automated_reports.type', $reportTypes);\n }\n\n if (! empty($name)) {\n $query->whereLike('name', \"%$name%\");\n }\n\n return $query->paginate($resultsPerPage, ['*'], 'page', $page);\n }\n\n public function countUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNotNull('sent_at')\n ->whereHas('report', function ($q) use ($user) {\n $q->where('team_id', $user->getTeamId())\n ->whereJsonContains('recipients->users', $user->getId());\n })\n ->count();\n }\n\n /**\n * Get report IDs for a specific team\n *\n * @param Team $team\n *\n * @return \\Illuminate\\Support\\Collection\n */\n public function getReportIdsByTeam(Team $team): \\Illuminate\\Support\\Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->pluck('id');\n }\n\n /**\n * Get all reports for a specific team\n *\n * @param Team $team\n *\n * @return Collection\n */\n public function getReportsByTeam(Team $team): Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->get();\n }\n\n /**\n * Get all report results for a specific report\n *\n * @param AutomatedReport $report\n *\n * @return Collection\n */\n public function getResultsByReport(AutomatedReport $report): Collection\n {\n return $this->getResultsByReportQuery($report)->get();\n }\n\n public function getResultsByReportQuery(AutomatedReport $report): Builder\n {\n return AutomatedReportResult::where('report_id', $report->getId());\n }\n\n public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder\n {\n $reportIds = $this->getReportIdsByTeam($team);\n\n return AutomatedReportResult::query()->whereIn('report_id', $reportIds)\n ->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);\n }\n\n /**\n * @param int|null $teamId Optional team ID to filter results\n *\n * @return \\Illuminate\\Support\\Collection<int, int> Collection of team IDs\n */\n public function getTeamIdsWithReportsResults(?int $teamId = null): \\Illuminate\\Support\\Collection\n {\n $query = DB::table('automated_reports')\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->select('teams.id')\n ->distinct();\n\n if ($teamId !== null) {\n $query->where('teams.id', $teamId);\n }\n\n return $query->pluck('teams.id');\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Repositories;\n\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Support\\Carbon;\nuse Illuminate\\Database\\Eloquent\\Collection;\nuse Illuminate\\Pagination\\LengthAwarePaginator;\nuse Illuminate\\Support\\Facades\\DB;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSort;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ReportSortDirection;\n\nclass AutomatedReportsRepository\n{\n /**\n * Create a new automated report\n *\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function create(array $data): AutomatedReport\n {\n return AutomatedReport::create($data);\n }\n\n /**\n * Find an automated report by UUID\n *\n * @param string $uuid\n *\n * @return AutomatedReport|null\n */\n public function findByUuid(string $uuid): ?AutomatedReport\n {\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();\n }\n\n public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport\n {\n if (is_numeric($idOrUuid)) {\n return AutomatedReport::find((int) $idOrUuid);\n }\n\n return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();\n }\n\n /**\n * Retrieve all standard (non-Ask Jiminny) automated reports.\n *\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAllStandardReports(\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->get();\n }\n\n /**\n * Retrieve all Ask Jiminny reports created by the given user.\n *\n * @param User $user The user whose reports to retrieve.\n * @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.\n * @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.\n *\n * @return Collection<AutomatedReport>\n */\n public function getAskJiminnyReportsByUser(\n User $user,\n string $sortColumn = 'created_at',\n string $sortDirection = 'desc'\n ): Collection {\n return $this->buildSortedQuery($sortColumn, $sortDirection)\n ->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)\n ->where('created_by', $user->getId())\n ->get();\n }\n\n private function buildSortedQuery(string $sortColumn, string $sortDirection): \\Illuminate\\Database\\Eloquent\\Builder\n {\n $allowedColumns = ['created_by', 'created_at'];\n if (! in_array($sortColumn, $allowedColumns)) {\n $sortColumn = 'created_at';\n }\n\n $sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';\n\n $query = AutomatedReport::query()->with(['creator', 'team']);\n\n if ($sortColumn === 'created_by') {\n $query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')\n ->orderByRaw(\"users.name COLLATE utf8mb4_unicode_ci {$sortDirection}\")\n ->select('automated_reports.*');\n } else {\n $query->orderBy($sortColumn, $sortDirection);\n }\n\n return $query;\n }\n\n /**\n * Get all active and enabled reports with active teams for the specified frequency.\n *\n * @param string $frequency\n *\n * @return Collection<AutomatedReport>\n */\n public function getActiveReportsByFrequency(string $frequency): Collection\n {\n return AutomatedReport::where('automated_reports.status', true)\n ->where('automated_reports.frequency', $frequency)\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->where('teams.status', Team::STATUS_ACTIVE)\n ->where(function ($query) {\n $query->whereNull('automated_reports.expires_at')\n ->orWhere('automated_reports.expires_at', '>=', now()->toDateString());\n })\n ->select('automated_reports.*')\n ->get();\n }\n\n /**\n * Update an automated report\n *\n * @param AutomatedReport $report\n * @param array $data\n *\n * @return AutomatedReport\n */\n public function update(AutomatedReport $report, array $data): AutomatedReport\n {\n $report->update($data);\n\n return $report;\n }\n\n /**\n * Create a new automated report result.\n *\n * @param array $data The data to create the automated report result with.\n *\n * @return AutomatedReportResult The newly created automated report result.\n */\n public function createResult(array $data): AutomatedReportResult\n {\n return AutomatedReportResult::create($data);\n }\n\n /**\n * Find an automated report result by UUID.\n *\n * @param string $uuid The UUID to find the automated report result with.\n *\n * @return AutomatedReportResult|null The automated report result if found, otherwise null.\n */\n public function findResultByUuid(string $uuid): ?AutomatedReportResult\n {\n return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();\n }\n\n public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('uuid', AutomatedReportResult::toOptimized($uuid))\n ->whereHas('report', static function ($query) use ($user): void {\n $query->where('team_id', $user->getTeamId())\n ->where('created_by', $user->getId());\n })\n ->first();\n }\n\n public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult\n {\n return AutomatedReportResult::query()\n ->where('parent_id', $result->getId())\n ->where('media_type', $type)\n ->first();\n }\n\n public function getGeneratedNotSentResults(): Collection\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNull('sent_at')\n ->where('status', AutomatedReportResult::STATUS_GENERATED)\n ->whereHas('report')\n ->with('report')\n ->get();\n }\n\n public function getPaginatedUserReports(\n User $user,\n ReportSort $sort,\n ReportSortDirection $sortDirection,\n int $resultsPerPage,\n int $page,\n ?Carbon $fromDate,\n ?Carbon $toDate,\n array $teamIds,\n array $reportTypes,\n ?string $name,\n ): LengthAwarePaginator {\n $query = AutomatedReportResult::query()\n ->whereNotNull('automated_report_results.generated_at')\n ->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')\n ->where('automated_reports.team_id', $user->getTeamId())\n ->whereJsonContains('automated_reports.recipients->users', $user->getId())\n ->orderByRaw(\"$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}\")\n ->select('automated_report_results.*')\n ->with('report.team');\n\n if ($fromDate !== null && $toDate !== null) {\n $query->whereBetween('generated_at', [$fromDate, $toDate]);\n }\n\n if (! empty($teamIds)) {\n $query->where(function ($q) use ($teamIds) {\n foreach ($teamIds as $id) {\n $q->orWhereJsonContains('automated_reports.groups', $id);\n }\n });\n }\n\n if (! empty($reportTypes)) {\n $query->whereIn('automated_reports.type', $reportTypes);\n }\n\n if (! empty($name)) {\n $query->whereLike('name', \"%$name%\");\n }\n\n return $query->paginate($resultsPerPage, ['*'], 'page', $page);\n }\n\n public function countUserReports(User $user): int\n {\n return AutomatedReportResult::query()\n ->whereNotNull('generated_at')\n ->whereNotNull('sent_at')\n ->whereHas('report', function ($q) use ($user) {\n $q->where('team_id', $user->getTeamId())\n ->whereJsonContains('recipients->users', $user->getId());\n })\n ->count();\n }\n\n /**\n * Get report IDs for a specific team\n *\n * @param Team $team\n *\n * @return \\Illuminate\\Support\\Collection\n */\n public function getReportIdsByTeam(Team $team): \\Illuminate\\Support\\Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->pluck('id');\n }\n\n /**\n * Get all reports for a specific team\n *\n * @param Team $team\n *\n * @return Collection\n */\n public function getReportsByTeam(Team $team): Collection\n {\n return AutomatedReport::where('team_id', $team->getId())->get();\n }\n\n /**\n * Get all report results for a specific report\n *\n * @param AutomatedReport $report\n *\n * @return Collection\n */\n public function getResultsByReport(AutomatedReport $report): Collection\n {\n return $this->getResultsByReportQuery($report)->get();\n }\n\n public function getResultsByReportQuery(AutomatedReport $report): Builder\n {\n return AutomatedReportResult::where('report_id', $report->getId());\n }\n\n public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder\n {\n $reportIds = $this->getReportIdsByTeam($team);\n\n return AutomatedReportResult::query()->whereIn('report_id', $reportIds)\n ->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);\n }\n\n /**\n * @param int|null $teamId Optional team ID to filter results\n *\n * @return \\Illuminate\\Support\\Collection<int, int> Collection of team IDs\n */\n public function getTeamIdsWithReportsResults(?int $teamId = null): \\Illuminate\\Support\\Collection\n {\n $query = DB::table('automated_reports')\n ->join('teams', 'automated_reports.team_id', '=', 'teams.id')\n ->select('teams.id')\n ->distinct();\n\n if ($teamId !== null) {\n $query->where('teams.id', $teamId);\n }\n\n return $query->pluck('teams.id');\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","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":"AXButton","text":"Expand Selected","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":"AXButton","text":"Collapse All","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":"AXButton","text":"Options","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":"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}]...
|
8932460332387265586
|
-8276790037575160524
|
click
|
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
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityServiceTest extends TestCase
{
private ActivitySearch&MockObject $activitySearch;
private ElasticActivityRepository&MockObject $elasticRepository;
private LoggerInterface&MockObject $logger;
private AskJiminnyReportActivityService $service;
protected function setUp(): void
{
$this->activitySearch = $this->createMock(ActivitySearch::class);
$this->elasticRepository = $this->createMock(ElasticActivityRepository::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->service = new AskJiminnyReportActivityService(
$this->activitySearch,
$this->elasticRepository,
$this->logger,
);
}
private function makeFilter(string $key, ?string $value): SearchFilter&MockObject
{
$filter = $this->createMock(SearchFilter::class);
$filter->method('getFilterProperty')->willReturn($key);
$filter->method('getFilterValue')->willReturn($value);
return $filter;
}
private function makeUser(): User&MockObject
{
$tz = new \DateTimeZone('UTC');
$user = $this->createMock(User::class);
$user->method('getTimezone')->willReturn($tz);
$user->method('getId')->willReturn(1);
$user->method('getUuid')->willReturn('user-uuid');
return $user;
}
private function makeSavedSearch(array $filters): Search&MockObject
{
$savedSearch = $this->createMock(Search::class);
$savedSearch->method('getId')->willReturn(42);
$savedSearch->method('getFilters')->willReturn(new \Illuminate\Support\LazyCollection($filters));
return $savedSearch;
}
public function testGetActivityIdsForSavedSearchReturnsIds(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->expects($this->once())
->method('getArrayFilterKeys')
->with($user)
->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->expects($this->once())
->method('onDemandSearchIdsOnly')
->willReturn(['id-1', 'id-2', 'id-3']);
$this->logger->expects($this->once())
->method('info')
->with('[AskJiminnyReport] Fetched activity IDs for saved search');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1', 'id-2', 'id-3'], $result);
}
public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->expects($this->once())->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEmpty($result);
}
public function testGetActivityIdsFiltersOutDateFilters(): void
{
$user = $this->makeUser();
$nonDateFilter = $this->makeFilter('owner_id', '123');
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');
$updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');
$updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');
$savedSearch = $this->makeSavedSearch([
$nonDateFilter,
$startDateFilter,
$endDateFilter,
$updatedFromFilter,
$updatedToFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
}
public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void
{
$user = $this->makeUser();
$closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');
$closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');
$regularFilter = $this->makeFilter('rep_id', '99');
$savedSearch = $this->makeSavedSearch([
$closingStartFilter,
$closingEndFilter,
$regularFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesArrayFilters(): void
{
$user = $this->makeUser();
$filter1 = $this->makeFilter('outcome', 'positive');
$filter2 = $this->makeFilter('outcome', 'negative');
$savedSearch = $this->makeSavedSearch([$filter1, $filter2]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesScalarFilters(): void
{
$user = $this->makeUser();
$filter = $this->makeFilter('direction', 'inbound');
$savedSearch = $this->makeSavedSearch([$filter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-5'], $result);
}
public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
$this->assertFalse($capturedCriteria->isFirstRequest());
}
public function testGetActivityIdsLogsWithCorrectContext(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);
$this->logger->expects($this->once())
->method('info')
->with(
'[AskJiminnyReport] Fetched activity IDs for saved search',
$this->callback(fn ($context) => $context['saved_search_id'] === 42
&& $context['user_id'] === 1
&& $context['activity_count'] === 2)
);
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
15
4
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Repositories;
use Carbon\CarbonImmutable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSort;
use Jiminny\Services\Kiosk\AutomatedReports\ReportSortDirection;
class AutomatedReportsRepository
{
/**
* Create a new automated report
*
* @param array $data
*
* @return AutomatedReport
*/
public function create(array $data): AutomatedReport
{
return AutomatedReport::create($data);
}
/**
* Find an automated report by UUID
*
* @param string $uuid
*
* @return AutomatedReport|null
*/
public function findByUuid(string $uuid): ?AutomatedReport
{
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($uuid))->first();
}
public function findByIdOrUuid(string $idOrUuid): ?AutomatedReport
{
if (is_numeric($idOrUuid)) {
return AutomatedReport::find((int) $idOrUuid);
}
return AutomatedReport::where('uuid', AutomatedReport::toOptimized($idOrUuid))->first();
}
/**
* Retrieve all standard (non-Ask Jiminny) automated reports.
*
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAllStandardReports(
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->whereNot('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->get();
}
/**
* Retrieve all Ask Jiminny reports created by the given user.
*
* @param User $user The user whose reports to retrieve.
* @param string $sortColumn The column to sort by. Allowed values: 'created_by', 'created_at'. Defaults to 'created_at'.
* @param string $sortDirection The sort direction. Allowed values: 'asc', 'desc'. Defaults to 'desc'.
*
* @return Collection<AutomatedReport>
*/
public function getAskJiminnyReportsByUser(
User $user,
string $sortColumn = 'created_at',
string $sortDirection = 'desc'
): Collection {
return $this->buildSortedQuery($sortColumn, $sortDirection)
->where('type', AutomatedReportsService::TYPE_ASK_JIMINNY)
->where('created_by', $user->getId())
->get();
}
private function buildSortedQuery(string $sortColumn, string $sortDirection): \Illuminate\Database\Eloquent\Builder
{
$allowedColumns = ['created_by', 'created_at'];
if (! in_array($sortColumn, $allowedColumns)) {
$sortColumn = 'created_at';
}
$sortDirection = strtolower($sortDirection) === 'asc' ? 'asc' : 'desc';
$query = AutomatedReport::query()->with(['creator', 'team']);
if ($sortColumn === 'created_by') {
$query->leftJoin('users', 'users.id', '=', 'automated_reports.created_by')
->orderByRaw("users.name COLLATE utf8mb4_unicode_ci {$sortDirection}")
->select('automated_reports.*');
} else {
$query->orderBy($sortColumn, $sortDirection);
}
return $query;
}
/**
* Get all active and enabled reports with active teams for the specified frequency.
*
* @param string $frequency
*
* @return Collection<AutomatedReport>
*/
public function getActiveReportsByFrequency(string $frequency): Collection
{
return AutomatedReport::where('automated_reports.status', true)
->where('automated_reports.frequency', $frequency)
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->where('teams.status', Team::STATUS_ACTIVE)
->where(function ($query) {
$query->whereNull('automated_reports.expires_at')
->orWhere('automated_reports.expires_at', '>=', now()->toDateString());
})
->select('automated_reports.*')
->get();
}
/**
* Update an automated report
*
* @param AutomatedReport $report
* @param array $data
*
* @return AutomatedReport
*/
public function update(AutomatedReport $report, array $data): AutomatedReport
{
$report->update($data);
return $report;
}
/**
* Create a new automated report result.
*
* @param array $data The data to create the automated report result with.
*
* @return AutomatedReportResult The newly created automated report result.
*/
public function createResult(array $data): AutomatedReportResult
{
return AutomatedReportResult::create($data);
}
/**
* Find an automated report result by UUID.
*
* @param string $uuid The UUID to find the automated report result with.
*
* @return AutomatedReportResult|null The automated report result if found, otherwise null.
*/
public function findResultByUuid(string $uuid): ?AutomatedReportResult
{
return AutomatedReportResult::where('uuid', AutomatedReportResult::toOptimized($uuid))->first();
}
public function findResultByUuidForUser(string $uuid, User $user): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('uuid', AutomatedReportResult::toOptimized($uuid))
->whereHas('report', static function ($query) use ($user): void {
$query->where('team_id', $user->getTeamId())
->where('created_by', $user->getId());
})
->first();
}
public function findChildResult(AutomatedReportResult $result, string $type): ?AutomatedReportResult
{
return AutomatedReportResult::query()
->where('parent_id', $result->getId())
->where('media_type', $type)
->first();
}
public function getGeneratedNotSentResults(): Collection
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNull('sent_at')
->where('status', AutomatedReportResult::STATUS_GENERATED)
->whereHas('report')
->with('report')
->get();
}
public function getPaginatedUserReports(
User $user,
ReportSort $sort,
ReportSortDirection $sortDirection,
int $resultsPerPage,
int $page,
?Carbon $fromDate,
?Carbon $toDate,
array $teamIds,
array $reportTypes,
?string $name,
): LengthAwarePaginator {
$query = AutomatedReportResult::query()
->whereNotNull('automated_report_results.generated_at')
->join('automated_reports', 'automated_report_results.report_id', '=', 'automated_reports.id')
->where('automated_reports.team_id', $user->getTeamId())
->whereJsonContains('automated_reports.recipients->users', $user->getId())
->orderByRaw("$sort->value COLLATE utf8mb4_unicode_ci {$sortDirection->value}")
->select('automated_report_results.*')
->with('report.team');
if ($fromDate !== null && $toDate !== null) {
$query->whereBetween('generated_at', [$fromDate, $toDate]);
}
if (! empty($teamIds)) {
$query->where(function ($q) use ($teamIds) {
foreach ($teamIds as $id) {
$q->orWhereJsonContains('automated_reports.groups', $id);
}
});
}
if (! empty($reportTypes)) {
$query->whereIn('automated_reports.type', $reportTypes);
}
if (! empty($name)) {
$query->whereLike('name', "%$name%");
}
return $query->paginate($resultsPerPage, ['*'], 'page', $page);
}
public function countUserReports(User $user): int
{
return AutomatedReportResult::query()
->whereNotNull('generated_at')
->whereNotNull('sent_at')
->whereHas('report', function ($q) use ($user) {
$q->where('team_id', $user->getTeamId())
->whereJsonContains('recipients->users', $user->getId());
})
->count();
}
/**
* Get report IDs for a specific team
*
* @param Team $team
*
* @return \Illuminate\Support\Collection
*/
public function getReportIdsByTeam(Team $team): \Illuminate\Support\Collection
{
return AutomatedReport::where('team_id', $team->getId())->pluck('id');
}
/**
* Get all reports for a specific team
*
* @param Team $team
*
* @return Collection
*/
public function getReportsByTeam(Team $team): Collection
{
return AutomatedReport::where('team_id', $team->getId())->get();
}
/**
* Get all report results for a specific report
*
* @param AutomatedReport $report
*
* @return Collection
*/
public function getResultsByReport(AutomatedReport $report): Collection
{
return $this->getResultsByReportQuery($report)->get();
}
public function getResultsByReportQuery(AutomatedReport $report): Builder
{
return AutomatedReportResult::where('report_id', $report->getId());
}
public function getReportResultsQueryForRetention(Team $team, CarbonImmutable $retentionDate): Builder
{
$reportIds = $this->getReportIdsByTeam($team);
return AutomatedReportResult::query()->whereIn('report_id', $reportIds)
->whereRaw('IFNULL(generated_at, created_at) <= ?', [$retentionDate]);
}
/**
* @param int|null $teamId Optional team ID to filter results
*
* @return \Illuminate\Support\Collection<int, int> Collection of team IDs
*/
public function getTeamIdsWithReportsResults(?int $teamId = null): \Illuminate\Support\Collection
{
$query = DB::table('automated_reports')
->join('teams', 'automated_reports.team_id', '=', 'teams.id')
->select('teams.id')
->distinct();
if ($teamId !== null) {
$query->where('teams.id', $teamId);
}
return $query->pluck('teams.id');
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
10968
|
|
16455
|
362
|
44
|
2026-04-14T15:17:33.910609+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776179853910_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditViewGoHistoryWindowHelpEDHome1DMSAct +SlackFileEditViewGoHistoryWindowHelpEDHome1DMSActivityFilesLater..•More+→Search Jiminny IncJiminny ...# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...Direct messagesAneliya Angelo...Vasil VasilevSteliyan GeorgievAdelina Petrova, Ili...P. Adelina Petrova% Galya DimitrovaRs Nikolay Nikolov "2Galya Dimitrova, Ni...2 Galya Dimitrova, Ni...i: AppsJira CloudToastGoogle Cale...# general42MessagesMore v@ Files• BookmarksDetraction Cor4 3Today ~30 1Salesforce for Slack APP5:19 PMPetko Kashinski just closed a renewal withViewz - Renewal (08/06/2026). Nice Work!Amount: USD 3,276ARR: USD 3,276Close Date: April 14, 2026Start Date: June 3, 2026Number of Salespeople:Detraction? falseDetraction Reason:Detraction Context:H1Salesforce for Slack APP5:59 PMPetko Kashinski just closed a renewal withgrape- - Renewal (27/06/2026). Nice Work!Amount: USD 6,274.8ARR: USD 6,274.8Close Date: April 14, 2026Start Date: June 13, 2026Number of Salespeople:Detraction? falseDetraction Reason:Detraction Context:801Message #general++New(lol14Activity MonitorAll ProcessesProcess NameBoosteroidFirefoxCP Isolated Web ContentWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)Notion Calendar Helper (Renderer)VTDecoderXPCServiceFirefox GPU HelperSlack Helper (Renderer)Firefox GPU HelperNotion Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentclaudeMEMORY PRESSUREMem...2,00 GB1,18 GB990,6 MB886,5 MB776,5 MB763,3 MB739,8 MB733,2 MB636,3 MB501,2 MB591,5 MB547,2 MB544,9 MB541,7 MB504,5 MB483,4 MB475,2 MB433,2 MB416,7 MB382,9 MB377,1 MB373,6 MB372,1 MB348,8 MB335,4 MB321,1 MB278,7 MB277,2 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <47Tue 14 Apr 18:17:33CPUMemoryDiskThreads382422813074242515112616262129232525242826242824232513EnergyPorts60012316 13494212671312112516 41217216622619323733313011912012212012812312212612411912272PID248351470040714664600358014500478484984226548248438019242731467311487087349623340701479150891282461334328931710951120232249278005091016,00 GB14,00 GB<1,95 GB3,13 GBApp Memory:Wired Memory:Compressed:NetworkUserlukaslukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,92 GB3,07 GB6,46 GB...
|
NULL
|
8932338713687570625
|
NULL
|
click
|
ocr
|
NULL
|
+SlackFileEditViewGoHistoryWindowHelpEDHome1DMSAct +SlackFileEditViewGoHistoryWindowHelpEDHome1DMSActivityFilesLater..•More+→Search Jiminny IncJiminny ...# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...Direct messagesAneliya Angelo...Vasil VasilevSteliyan GeorgievAdelina Petrova, Ili...P. Adelina Petrova% Galya DimitrovaRs Nikolay Nikolov "2Galya Dimitrova, Ni...2 Galya Dimitrova, Ni...i: AppsJira CloudToastGoogle Cale...# general42MessagesMore v@ Files• BookmarksDetraction Cor4 3Today ~30 1Salesforce for Slack APP5:19 PMPetko Kashinski just closed a renewal withViewz - Renewal (08/06/2026). Nice Work!Amount: USD 3,276ARR: USD 3,276Close Date: April 14, 2026Start Date: June 3, 2026Number of Salespeople:Detraction? falseDetraction Reason:Detraction Context:H1Salesforce for Slack APP5:59 PMPetko Kashinski just closed a renewal withgrape- - Renewal (27/06/2026). Nice Work!Amount: USD 6,274.8ARR: USD 6,274.8Close Date: April 14, 2026Start Date: June 13, 2026Number of Salespeople:Detraction? falseDetraction Reason:Detraction Context:801Message #general++New(lol14Activity MonitorAll ProcessesProcess NameBoosteroidFirefoxCP Isolated Web ContentWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)Notion Calendar Helper (Renderer)VTDecoderXPCServiceFirefox GPU HelperSlack Helper (Renderer)Firefox GPU HelperNotion Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentclaudeMEMORY PRESSUREMem...2,00 GB1,18 GB990,6 MB886,5 MB776,5 MB763,3 MB739,8 MB733,2 MB636,3 MB501,2 MB591,5 MB547,2 MB544,9 MB541,7 MB504,5 MB483,4 MB475,2 MB433,2 MB416,7 MB382,9 MB377,1 MB373,6 MB372,1 MB348,8 MB335,4 MB321,1 MB278,7 MB277,2 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <47Tue 14 Apr 18:17:33CPUMemoryDiskThreads382422813074242515112616262129232525242826242824232513EnergyPorts60012316 13494212671312112516 41217216622619323733313011912012212012812312212612411912272PID248351470040714664600358014500478484984226548248438019242731467311487087349623340701479150891282461334328931710951120232249278005091016,00 GB14,00 GB<1,95 GB3,13 GBApp Memory:Wired Memory:Compressed:NetworkUserlukaslukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,92 GB3,07 GB6,46 GB...
|
16453
|
|
12254
|
261
|
14
|
2026-04-14T10:56:55.090808+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776164215090_m2.jpg...
|
Slack
|
Aneliya Angelova, Nikolay Yankov, Steliyan Georgie Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev (DM) - 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
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
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Galya Dimitrova
Vasil Vasilev
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Yankov
Nikolay Yankov
Jira Cloud
Toast
Google Calendar
Nikolay Yankov
Today at 1:49:38 PM
7 minutes ago
Добре, 2 неща:
в името на генерирания репорт е дата вчера, не днес
и имейл не дойде
image.png
Toggle file
image.png
Download image.png
Share file: image.png
View canvas details
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Open in channel
Forward message…
Save for later
More actions
т
т
Also send to the group
Also send to the group
loading…
Channel...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.5066406,"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.5066406,"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.52851564,"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.5328125,"top":1.0,"width":0.01171875,"height":-0.08124995},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.52851564,"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.5679687,"top":1.0,"width":0.021484375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"bounds":{"left":0.5679687,"top":1.0,"width":0.020703126,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"bounds":{"left":0.5679687,"top":1.0,"width":0.021484375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"bounds":{"left":0.5679687,"top":1.0,"width":0.034375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"bounds":{"left":0.5679687,"top":1.0,"width":0.028515626,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.05234375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.026171874,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.014453125,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.021484375,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.040625,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.032421876,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.03046875,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.02265625,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.019140625,"height":-0.079861164},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"bounds":{"left":0.57421875,"top":1.0,"width":0.034765624,"height":-0.0916667},"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":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","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":"Adelina Petrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","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":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Google Calendar","depth":23,"role_description":"text"},{"role":"AXButton","text":"Nikolay Yankov","depth":22,"bounds":{"left":0.6621094,"top":1.0,"width":0.040625,"height":-0.090972185},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"bounds":{"left":0.70234376,"top":1.0,"width":0.003515625,"height":-0.09236109},"role_description":"text"},{"role":"AXLink","text":"Today at 1:49:38 PM","depth":22,"bounds":{"left":0.7054688,"top":1.0,"width":0.029296875,"height":-0.094444394},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7 minutes ago","depth":23,"bounds":{"left":0.7054688,"top":1.0,"width":0.029296875,"height":-0.094444394},"role_description":"text"},{"role":"AXStaticText","text":"Добре, 2 неща:","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"в името на генерирания репорт е дата вчера, не днес","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"и имейл не дойде","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"image.png","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXButton","text":"Toggle file","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXLink","text":"image.png","depth":25,"role_description":"Unlabelled image","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Download image.png","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share file: image.png","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View canvas details","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in channel","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":24,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"т","depth":25,"value":"т","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"т","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Also send to the group","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"Also send to the group","depth":24,"role_description":"Tick box","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"loading…","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"role_description":"text"}]...
|
8932002218609895084
|
-1749482845886695412
|
visual_change
|
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
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
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Galya Dimitrova
Vasil Vasilev
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Nikolov
Galya Dimitrova
,
Nikolay Yankov
Nikolay Yankov
Jira Cloud
Toast
Google Calendar
Nikolay Yankov
Today at 1:49:38 PM
7 minutes ago
Добре, 2 неща:
в името на генерирания репорт е дата вчера, не днес
и имейл не дойде
image.png
Toggle file
image.png
Download image.png
Share file: image.png
View canvas details
More actions
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Open in channel
Forward message…
Save for later
More actions
т
т
Also send to the group
Also send to the group
loading…
Channel
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpdoo.sideme.minny.com/di-teoorlsAl Reports• Report nameNAME -lesto- 1s Aor Zurolesto - 13 ADr 4040PeriodiYou are currently impersonating Nikolay Yankov <)Report TypePlatform Sprint 1 Q2 - Platform TeaJY-20543 add AJ reports User piloZ Configure SSH access to multiple@ Console Home | Console Home | usSecurityGroup | EC2 |us-east-2JY-20543 add AJ reports User pilo5 SRD-6779 | JY-20632 | Unable toJy 19798 evaluation for ai activity& Jiminny7 Ask Jiminny test report - 8 Aor 201Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleNew TabCa CloudWatch | us-east-2+ New Tab© Clear all |SHAREDS03 Ask Jiminny reportsACTIONSFREQUENCYDailyDailyДAPDATE14/04/207014/04/2026Status200206200200200200200200200200200200206200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200200Q InspectorFilter URLsHllMLeSSPOSTPOSTPOSTPosIPOSTPosIPOSTPOSTPOSTPOSTPOSIPOSTPOSTPOSTPosIPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOSTPOST2/95JY-18909-automated-reports-ask-iiminny = 869909)Suooort Dailv . in 1h 4m(БГTue 14 Aor 13:56:54ConsoleD DebuggerN Network{) Style Editor( PerformanceO: MemoryE Storage© 99+Disable CacheNo Throttling + 50rontsImagesMediaWsotherDomainInitiatorTypeTra=ponxampiatrorm-stagingar=o-u19uov99-yaca- xnrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrr.logr-in.comira=ponxat/plattorm-staging&r=6-019d8b99-9acs- xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comla=oonxarolatrorm-stacinear=o-u1saoogg-gacs- xhrAr.logr-in.comiPa=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhr8r.logr-in.comrazoonxatoattorm-stacingxr=0-01908099-9acs- xhnA r.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comira=ponxat/plattorm-staging&r=6-019d8b99-9acs- xhrAr.logr-in.comiPa=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comiPa=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrIsonArlogr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrrloar-in.comrasoonxatoattorm-stacingxr=0-01908099-9acs- xhnAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9: +4 xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comiPa=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrA r.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhr8r.logr-in.comifa=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrjsonAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comira=ponxat/plattorm-staging&r=6-019d8b99-9acs- xhrIsonAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrA r.logr-in.comiPa=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comiPa=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comiPa=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comiPa=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comrasoonxatoattorm-stacingxr=0-01908099-9acs- xhnAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhr8r.logr-in.comrasoonxatoattorm-stacingxr=0-01908099-9 4 xhnAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comiPa=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comiPa=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- [EMAIL]/o atform-stacing&r=6-019d8099-9ac3- xhnAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrArlogr-in.comrazoonxatoattorm-stacingxr=0-01908099-9acs- xhnAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrAr.logr-in.comi?a=ponxaf/platform-staging&r=6-019d8b99-9ac3- xhrlison48.37 kB / 635.65 kB transferredFinish: 6.06 min DOMContentLoaded: 64 ms• load: 207 msTransferredDUIKD6.88 kB7.82 kB2.14 kB3.22 Kb2.62 kB2.27 kB2.33 kB2.27 kB2.20 kB2./0 KB4.54 kB2.96 KB2.33 kB3.14 kB2.27 kB2.27 kBLos kb2.53 kB2.53 kB2.53 kB2.53 KB2.20 kB2.40 kB2.27 kB2.78 kB2.68 kB5.03 kB2.53 kB252KR2.53 kL2.53 kB2.27 kB9os k:2.36 kB2.33 kB2.27 kB2.33 kB2.27 kB2.33 kB297 k32.27 kB2.44KB2.40 kB2.19 kB2.27 kB254 K2.54 kB2.54 kB198 ms199 ms|182 msOBOB172 ms|151 ms0B| 186 ms.|160 ms| 193 m| 172 пOB| 174OBOBOBOB...
|
NULL
|
|
12798
|
275
|
17
|
2026-04-14T11:39:40.416894+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776166780416_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormProject vFileFV faVsco.js vEditViewNavigat PhpStormProject vFileFV faVsco.js vEditViewNavigateCodeLaravelRefactorToolsWindowHelp#11894 on JY-18909-automated-reports-ask-iminny ~© AutomatedReportsCi© AutomatedReportsRr© AutomatedReportsS:© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpIsackM TeamsD TracksD TranscriptionD TwilioO UsersVocabularyD Zoom© CoachingFeedbacksUpr© Command.php© CreateDatabaseUsers.pDatabaseTableCount.ptc DeleredoAcimnorescc Deleress eroverscom(C DevPostmanCommand.© EngagementStatsRegen© FeatureFlagsHelper.php© FixCrossTenantlssues.p© FlushRolesPermissionsC© GeneratelnternalWebhoGroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic© ImportRecording.phpImportUsersFromCsvFil© IterateUsersCommand.fc.liminnveacheclearcom(©) JiminnyDebugCommanc(©) JiminnySetEncryptedTo(C) .JiminnvTokeninfoComm© MakeSlackLiveCoachins© ManageScimForTeam.p© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComi© RecalculateDealRisksCo(C) RemoveDeleteMarkersd© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php© ReportController.php© SendReportJob.php© AutomatedReport&.ommand.php x© AutomatedReportsSendCommand.phpAadLayoutchutles.onc leam.ong= custom.logC) AutomatedReportsRepository.phpconsole PROD© AutomatedReportsService.phpTrackProviderInstalledEvent.php© ActivityLogged.php•Automareakeporscallbackservice.ongC RequestGenerateAskJiminnyReportJob.phpRequestGeneratekeporJob.ong© AutomatedReportResult.php© AutomatedReport.phpclass AutomatedReportsSendCommand extends Command521522= laravel.logA console (EU]A SF [jiminny@localhost]A console [STAGING]Tx: Auto vFlaycroundvt.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable_idJOIN teams t1..n<->1: on t.id = u.team_idWHERE U.team_id = 1 and sa.provider = 'salesforce';A HS_local [iminny@localhost]Sa jiminny v017 A15 Х13 A25 Ct32 Ct3941444554*ne nome one stendrure of tne console commond.*ovar scringprotected $signature = 'automated-reports:send';/*** The console command description.* Ovar string52415251154015275285295305315325335345351554protected $description = 'Sends automated reports based on user timezone';public function __construct(private readonly LoggerInterface $logger,private readonly AutomatedReportsRepository $reportRepository,private readonly AutomatedReportsService $automatedReportsService,private readonly BusDispatcher $dispatcher,parent::__construct();* Execute the console command.* Qreturn intpublic function handle(): int155000%54054154254354454554654715481547550551552553554555556foreach (SrenortResults as SrevortResult) {1558/** Ovar AutomatedReportResult $reportResult */$validRecipients = $this->automatedReportsService->getValidRecipientUsers($reportResult->g560if ($this->automatedReportsService->shouldSendReport($validRecipients, $reportResult->getG561$this->logger->info(self::LOG_PREFIXDispatching job',5621);563$this->dispatcher->dispatch(new SendReportJob($reportResult->getUuid()));select * tron reans where 1o =15select x tron groupsg suin playpooks p1.n<->1: on g.playbook_id = p.id winselect * TroIgroupsnere t =oo.select * from playbooks where team_id = 1;select * from playbooks where id = 175;select * from playbook_categories where playbook_id = 175;select * from users where team_id = 1;select * from users where id = 7160;select * from crm_profiles where user_id = 7160;select * from features;select# id, vuid, type, provider, playbook_category_id, user_id,leao o, contact* cri conmouracionorcirn orovoer LorTranscrrocion orstatusfrom activities where crm_configuration_id = 1 and type =' conference'# and crm_provider_id IS NOT NULLand provider != 'uploader' and actual_start_time IS NOT NULLORDER by id desc;select * from activities where id = 54747783; # 00U0400000pCZojMACselect p.id, p.activity_type, pc.id, pc.nameFROM playbooks Pjoin playbook_categories pc1<->1..n: on p.id = pc.playbook_idwhere p.team_id = 1 and p.activity_type = 'event':SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = •SELECT * FROM crm_field_values WHERE crm_field_id = 4;select * from crm_layouts cl join playbook_layouts pl 1<->1.n: on cl.id = piwhere crm_configuration_id = 1 and pl.playbook_id = 175;select * from teams;SELECT r.* FROM automated_reportsrjoin teams t on r.teamid = t.idWHERE r. frequency = 'daily'and r.status = 1AND t.status ='activeAND (r.exRicesuat >= now() OR r.exeicesnat IS NULL);select * from automated_report_results where repontaig IN (18, 33);Cascade & TI568 Vreturn CommandALias: : SUCCESS;select * from activity_searches where id = 10932;om activity_search_filters where activity_search_id = 10932;Command 981om automated_reports order by id desc;select * from automated_report_results order by id desc;select * from automated_report_results where repontaid IN (36);571572Pushed 1 commit to origin/JY-18909-automated-reports-ask-jiminny // View pull request (today 13:29)loblSupport Daily • in 21mAL AutomatedReportsCommandTestv100% [45)Tue 14 Apr 14:39:40CascadeDebug Automated Rep+0 •rercnes Automaceakeporckesule recoras where.generated at is NOT NULLsent_at is NULLstatus = STATUS_GENERATED• has a related reportYour 7 results pass this.VwSten 2: getValidRecipientlsersoFor each result, gets recipients. Since it's an AskJiminny report it goes through resolveAskJiminnyRecipients7 Includes creator. ror recular reoorts t eoes tnrouen detkeclolentusers . cltner way, tne creator nas anemail, so validRecipients is not empty. VStep 3: shouldSendReporto — Hisis whEkEllraILsD phppublic const int SENT_REPORT_AT_HOURS = 5;The logic picks the earliest timezone (highest UTC offset = most ahead of UTC). For GMT+3, the offset is +10800 seconds.t then checks.0 phpsnow = larbon::nowsearllestlzcurrent cime in GMI+3$isScheduledTime = (int) $now->format('H') == 5;// is it 05:00 in GMT+3?The report only sends if it's currently 5:00 AM in the creator's timezone (GMT+3). That means 02:00 UTCIf it's not 5:00 AM right now in GMT+3, it falls through to hasPassedScheduledTime() :• phppublic tunction naspassedschedu ledlimerrlarbonintertace sgeneratedAt, string stimezone): booyunis checks.generatedAt < 05:00 today (in GMT+3, converted to UTC) ANDnow > 05:00 today (in GMT+3, converted to UTC)So it only returns true if:1. The report was generated before 05:00 GMT+3 today (i.e., before 02:00 UTC)2. AND current time is past 05:00 GMT+3 (past 02:00 UTC.Why Nothing Is SentThe current time in GMT+3 is not 05:00 AM, and one of these is also true:• The report was generated after 05:00 GMT+3 (02:00 UTC) today → generatedAtUtc is NOT < scheduledTimeurc, so nasrasseascheduleolime rerumns Talse• OR the current time is betore 05:00 GMI+3→ nowltc Is NO > schedul edtimeltcGiven you're running this at 2:35 PM UTC+3 (14:35 local / 11:35 UTC), here's what happens:ScheduledTime = today at 05:00 GMT+3 = 02:00 UTCnow = 11:35 UTC → past scheduled time VgeneratedAt must be before 02:00 UTC todayThe likely cause: the report was generated AFTER 05:00 GMT+3 (after 02:00 UTC) today, so generatedAtutc. lt(scheduledTimeUtc) is false → hasPassedScheduledTime returns false → nothing sends.In short: the report must have been generated before the scheduled send time (05:00 in the user'sTmezone rmlwas cenerarec aneroo0u cmito uwi ony de elcioe to senc omorrow ar0e0u cMilts,Ask anything (84L)+ <> Code Claude Sonnet 4.6winasun leams61:1/ 3 charsuir-o( 4 spaces...
|
NULL
|
8931583717566048959
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormProject vFileFV faVsco.js vEditViewNavigat PhpStormProject vFileFV faVsco.js vEditViewNavigateCodeLaravelRefactorToolsWindowHelp#11894 on JY-18909-automated-reports-ask-iminny ~© AutomatedReportsCi© AutomatedReportsRr© AutomatedReportsS:© CreateMockAskJimir© DeleteReportComma© GenerateMarketingR© Team.php© Usage.phpIsackM TeamsD TracksD TranscriptionD TwilioO UsersVocabularyD Zoom© CoachingFeedbacksUpr© Command.php© CreateDatabaseUsers.pDatabaseTableCount.ptc DeleredoAcimnorescc Deleress eroverscom(C DevPostmanCommand.© EngagementStatsRegen© FeatureFlagsHelper.php© FixCrossTenantlssues.p© FlushRolesPermissionsC© GeneratelnternalWebhoGroupSetDefaultLangua© HelperTruncateCoachin© HubspotJournalPollingC© HubspotWebhookServic© ImportRecording.phpImportUsersFromCsvFil© IterateUsersCommand.fc.liminnveacheclearcom(©) JiminnyDebugCommanc(©) JiminnySetEncryptedTo(C) .JiminnvTokeninfoComm© MakeSlackLiveCoachins© ManageScimForTeam.p© MarkBranchForEnvironn© MuteOrganizerChannel.© PhpApm.php© PropagateCoachingFeer© PurgeConferences.php© PurgeSoftDeletedOppor© PurgeSyncBatchesComi© RecalculateDealRisksCo(C) RemoveDeleteMarkersd© RemoveExpiredNudgesi© RemoveUnusedParticip:© ResetElasticSearch.php© RestoreActivityCrmProv© RestoreActivityTypeCor© SeedActivities.php© SyncActivity.php© ReportController.php© SendReportJob.php© AutomatedReport&.ommand.php x© AutomatedReportsSendCommand.phpAadLayoutchutles.onc leam.ong= custom.logC) AutomatedReportsRepository.phpconsole PROD© AutomatedReportsService.phpTrackProviderInstalledEvent.php© ActivityLogged.php•Automareakeporscallbackservice.ongC RequestGenerateAskJiminnyReportJob.phpRequestGeneratekeporJob.ong© AutomatedReportResult.php© AutomatedReport.phpclass AutomatedReportsSendCommand extends Command521522= laravel.logA console (EU]A SF [jiminny@localhost]A console [STAGING]Tx: Auto vFlaycroundvt.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable_idJOIN teams t1..n<->1: on t.id = u.team_idWHERE U.team_id = 1 and sa.provider = 'salesforce';A HS_local [iminny@localhost]Sa jiminny v017 A15 Х13 A25 Ct32 Ct3941444554*ne nome one stendrure of tne console commond.*ovar scringprotected $signature = 'automated-reports:send';/*** The console command description.* Ovar string52415251154015275285295305315325335345351554protected $description = 'Sends automated reports based on user timezone';public function __construct(private readonly LoggerInterface $logger,private readonly AutomatedReportsRepository $reportRepository,private readonly AutomatedReportsService $automatedReportsService,private readonly BusDispatcher $dispatcher,parent::__construct();* Execute the console command.* Qreturn intpublic function handle(): int155000%54054154254354454554654715481547550551552553554555556foreach (SrenortResults as SrevortResult) {1558/** Ovar AutomatedReportResult $reportResult */$validRecipients = $this->automatedReportsService->getValidRecipientUsers($reportResult->g560if ($this->automatedReportsService->shouldSendReport($validRecipients, $reportResult->getG561$this->logger->info(self::LOG_PREFIXDispatching job',5621);563$this->dispatcher->dispatch(new SendReportJob($reportResult->getUuid()));select * tron reans where 1o =15select x tron groupsg suin playpooks p1.n<->1: on g.playbook_id = p.id winselect * TroIgroupsnere t =oo.select * from playbooks where team_id = 1;select * from playbooks where id = 175;select * from playbook_categories where playbook_id = 175;select * from users where team_id = 1;select * from users where id = 7160;select * from crm_profiles where user_id = 7160;select * from features;select# id, vuid, type, provider, playbook_category_id, user_id,leao o, contact* cri conmouracionorcirn orovoer LorTranscrrocion orstatusfrom activities where crm_configuration_id = 1 and type =' conference'# and crm_provider_id IS NOT NULLand provider != 'uploader' and actual_start_time IS NOT NULLORDER by id desc;select * from activities where id = 54747783; # 00U0400000pCZojMACselect p.id, p.activity_type, pc.id, pc.nameFROM playbooks Pjoin playbook_categories pc1<->1..n: on p.id = pc.playbook_idwhere p.team_id = 1 and p.activity_type = 'event':SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = •SELECT * FROM crm_field_values WHERE crm_field_id = 4;select * from crm_layouts cl join playbook_layouts pl 1<->1.n: on cl.id = piwhere crm_configuration_id = 1 and pl.playbook_id = 175;select * from teams;SELECT r.* FROM automated_reportsrjoin teams t on r.teamid = t.idWHERE r. frequency = 'daily'and r.status = 1AND t.status ='activeAND (r.exRicesuat >= now() OR r.exeicesnat IS NULL);select * from automated_report_results where repontaig IN (18, 33);Cascade & TI568 Vreturn CommandALias: : SUCCESS;select * from activity_searches where id = 10932;om activity_search_filters where activity_search_id = 10932;Command 981om automated_reports order by id desc;select * from automated_report_results order by id desc;select * from automated_report_results where repontaid IN (36);571572Pushed 1 commit to origin/JY-18909-automated-reports-ask-jiminny // View pull request (today 13:29)loblSupport Daily • in 21mAL AutomatedReportsCommandTestv100% [45)Tue 14 Apr 14:39:40CascadeDebug Automated Rep+0 •rercnes Automaceakeporckesule recoras where.generated at is NOT NULLsent_at is NULLstatus = STATUS_GENERATED• has a related reportYour 7 results pass this.VwSten 2: getValidRecipientlsersoFor each result, gets recipients. Since it's an AskJiminny report it goes through resolveAskJiminnyRecipients7 Includes creator. ror recular reoorts t eoes tnrouen detkeclolentusers . cltner way, tne creator nas anemail, so validRecipients is not empty. VStep 3: shouldSendReporto — Hisis whEkEllraILsD phppublic const int SENT_REPORT_AT_HOURS = 5;The logic picks the earliest timezone (highest UTC offset = most ahead of UTC). For GMT+3, the offset is +10800 seconds.t then checks.0 phpsnow = larbon::nowsearllestlzcurrent cime in GMI+3$isScheduledTime = (int) $now->format('H') == 5;// is it 05:00 in GMT+3?The report only sends if it's currently 5:00 AM in the creator's timezone (GMT+3). That means 02:00 UTCIf it's not 5:00 AM right now in GMT+3, it falls through to hasPassedScheduledTime() :• phppublic tunction naspassedschedu ledlimerrlarbonintertace sgeneratedAt, string stimezone): booyunis checks.generatedAt < 05:00 today (in GMT+3, converted to UTC) ANDnow > 05:00 today (in GMT+3, converted to UTC)So it only returns true if:1. The report was generated before 05:00 GMT+3 today (i.e., before 02:00 UTC)2. AND current time is past 05:00 GMT+3 (past 02:00 UTC.Why Nothing Is SentThe current time in GMT+3 is not 05:00 AM, and one of these is also true:• The report was generated after 05:00 GMT+3 (02:00 UTC) today → generatedAtUtc is NOT < scheduledTimeurc, so nasrasseascheduleolime rerumns Talse• OR the current time is betore 05:00 GMI+3→ nowltc Is NO > schedul edtimeltcGiven you're running this at 2:35 PM UTC+3 (14:35 local / 11:35 UTC), here's what happens:ScheduledTime = today at 05:00 GMT+3 = 02:00 UTCnow = 11:35 UTC → past scheduled time VgeneratedAt must be before 02:00 UTC todayThe likely cause: the report was generated AFTER 05:00 GMT+3 (after 02:00 UTC) today, so generatedAtutc. lt(scheduledTimeUtc) is false → hasPassedScheduledTime returns false → nothing sends.In short: the report must have been generated before the scheduled send time (05:00 in the user'sTmezone rmlwas cenerarec aneroo0u cmito uwi ony de elcioe to senc omorrow ar0e0u cMilts,Ask anything (84L)+ <> Code Claude Sonnet 4.6winasun leams61:1/ 3 charsuir-o( 4 spaces...
|
NULL
|
|
61764
|
1331
|
54
|
2026-04-21T07:11:07.579789+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755467579_m2.jpg...
|
Firefox
|
JY-20701 | Reschedule HubSpot Sync Objects by yalo JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/11989/changes#diff-b8b github.com/jiminny/app/pull/11989/changes#diff-b8b6dffeffd9f880149efbe08aa7165b161a69611ee9fc88406f7ca73903b1a2...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board 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
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
Close tab
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
New Tab
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (21)
Security and quality
(
21
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
JY-20701 | Reschedule HubSpot Sync Objects #11989 Edit title
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
Edit title
Preview
Preview
Awaiting approval
Awaiting approval
Code
Code
Open
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
Lines changed: 949 additions & 97 deletions
Conversation (5)
Conversation
(
5
)
Commits (22)
Commits
(
22
)
Checks (3)
Checks
(
3
)
Files changed (11)
Files changed
(
11
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
JY-20701 | Reschedule HubSpot Sync Objects
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
All commits
All commits
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
1
/
11
viewed
Awaiting approval
Awaiting approval
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Console
Commands/Crm
Traits
SyncObjectsCommandTrait.php
SyncObjectsCommandTrait.php
SyncHubspotObjects.php
SyncHubspotObjects.php
SyncObjects.php
SyncObjects.php
Kernel.php
Kernel.php
Http/Controllers/Webhook/Hubspot
ProcessesWebhooksTrait.php
ProcessesWebhooksTrait.php
Jobs/Crm
SyncHubspotObjects.php
SyncHubspotObjects.php
SyncObjects.php
SyncObjects.php
Services/Crm/Hubspot/ServiceTraits
OpportunitySyncTrait.php
OpportunitySyncTrait.php
tests/Unit
Collapse file
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
Copy file name to clipboard
Lines changed: 81 additions & 0 deletions
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -0,0 +1,81 @@
1
+
<?php
2
+
3
+
declare
(strict_types=
1
);
4
+
5
+
namespace
Jiminny
\
Console
\
Commands
\
Crm
\
Traits
;
6
+
7
+
use
Jiminny
\
Jobs
\
Job
;
8
+
use
Jiminny
\
Models
\
Team
;
9
+
10
+
trait
SyncObjectsCommandTrait
11
+
{
12
+
abstract
protected
function
getStaggerDelaySeconds
():
float
;
13
+
14
+
abstract
protected
function
getLogPrefix
():
string
;
15
+
16
+
abstract
protected
function
createSyncJob
(
Team
$
team
):
Job
;
17
+
18
+
protected
function
getMaxDelaySeconds
(): ?
int
19
+
{
20
+
return
null
;
21
+
}
22
+
23
+
protected
function
dispatchSyncJobsForTeams
(
iterable
$
teams
):
int
24
+
{
25
+
$
dispatchIndex
=
0
;
26
+
$
maxDelay
=
$
this
->
getMaxDelaySeconds
();
27
+
28
+
foreach
(
$
teams
as
$
team
) {
29
+
$
config
=
$
team
->
getCrmConfiguration
();
30
+
31
+
if
(
$
config
->
getAttribute
(
'
sync_objects
'
) ===
false
) {
32
+
continue
;
Add comment
More actions
33
+
}
34
+
35
+
if
(
$
team
->
getAttribute
(
'
owner_id
'
) ===
null
) {
36
+
$
this
->
error
(
sprintf
(
37
+
'
Team %s (%s) is not yet assigned an owner. skipping...
'
,
38
+
$
team
->
getName
(),
39
+
$
team
->
getUuid
()
40
+
));
41
+
42
+
continue
;
43
+
}
44
+
45
+
if
(
$
config
->
getAttribute
(
'
over_quota_at
'
) ||
$
config
->
getAttribute
(
'
api_disabled_at
'
)) {
46
+
$
this
->
error
(
sprintf
(
47
+
'
Team %s (%s) API unavailable... skipping...
'
,
48
+
$
team
->
getName
(),
49
+
$
team
->
getUuid
()
50
+
));
51
+
52
+
continue
;
53
+
}
54...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"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.013297873,"top":0.10614525,"width":0.09524601,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.08344415,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.08294548,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.15791224,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.02144282,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"bounds":{"left":0.0,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.08610372,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.30247405,"width":0.042719416,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.367917,"width":0.1740359,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.3639266,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.38946527,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.40063846,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.42218676,"width":0.07962101,"height":0.032721467},"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.013297873,"top":0.43335995,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.0,"top":0.45490822,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.4660814,"width":0.10721409,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.48922586,"width":0.07413564,"height":0.025538707},"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.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to content","depth":6,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to content","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open menu","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Homepage (g then d)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"jiminny","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"app","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Search or jump to…","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to search","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chat with Copilot","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Open Copilot…","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create new...","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues(g then i)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Pull requests","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Repositories","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"You have unread notifications(g then n)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open user navigation menu","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Repository navigation","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Repository navigation","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pull requests (31)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Agents","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Agents","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Actions","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Wiki","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Wiki","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security and quality (21)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security and quality","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Important update","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Important update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Review this update","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review this update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and manage your preferences in your","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GitHub account settings","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub account settings","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dismiss banner","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"JY-20701 | Reschedule HubSpot Sync Objects #11989 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11989","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit title","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Preview","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Preview","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Awaiting approval","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Awaiting approval","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Code","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"yalokin-jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 22 commits into","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20701-reschedule-HubSpot-processing","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701-reschedule-HubSpot-processing","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 949 additions & 97 deletions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Conversation (5)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Conversation","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Commits (22)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Commits","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"22","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Checks (3)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Files changed (11)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Files changed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Pull Request Toolbar","depth":14,"bounds":{"left":0.090259306,"top":0.07581804,"width":0.0003324468,"height":0.0007980846},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pull Request Toolbar","depth":15,"bounds":{"left":0.090259306,"top":0.07861133,"width":0.030086435,"height":0.08060654},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse file tree","depth":14,"bounds":{"left":0.090259306,"top":0.0650439,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Open","depth":14,"bounds":{"left":0.112865694,"top":0.06943336,"width":0.011968086,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20701 | Reschedule HubSpot Sync Objects","depth":14,"bounds":{"left":0.1314827,"top":0.058260176,"width":0.103390954,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701 | Reschedule HubSpot Sync Objects","depth":16,"bounds":{"left":0.1314827,"top":0.059856344,"width":0.103390954,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"bounds":{"left":0.23753324,"top":0.059856344,"width":0.0028257978,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11989","depth":15,"bounds":{"left":0.24035904,"top":0.059856344,"width":0.012965426,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"All commits","depth":14,"bounds":{"left":0.12882313,"top":0.07182761,"width":0.03374335,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All commits","depth":16,"bounds":{"left":0.13181517,"top":0.07701516,"width":0.02244016,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"yalokin-jiminny","depth":15,"bounds":{"left":0.1668883,"top":0.07581804,"width":0.029920213,"height":0.014365523},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":16,"bounds":{"left":0.1668883,"top":0.07701516,"width":0.029920213,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 22 commits into","depth":15,"bounds":{"left":0.1981383,"top":0.07701516,"width":0.060339097,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"bounds":{"left":0.25980717,"top":0.074221864,"width":0.018284574,"height":0.017557861},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"bounds":{"left":0.26180187,"top":0.07741421,"width":0.014295213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"bounds":{"left":0.27942154,"top":0.07701516,"width":0.00880984,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20701-reschedule-HubSpot-processing","depth":16,"bounds":{"left":0.28956118,"top":0.074221864,"width":0.09507979,"height":0.017557861},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20701-reschedule-HubSpot-processing","depth":17,"bounds":{"left":0.29155585,"top":0.07741421,"width":0.091090426,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"bounds":{"left":0.38597074,"top":0.07182761,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":15,"bounds":{"left":0.8216423,"top":0.070231445,"width":0.0018284575,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"bounds":{"left":0.8234708,"top":0.070231445,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":15,"bounds":{"left":0.82696146,"top":0.070231445,"width":0.0038231383,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"viewed","depth":15,"bounds":{"left":0.83194816,"top":0.070231445,"width":0.013131649,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Awaiting approval","depth":14,"bounds":{"left":0.85339093,"top":0.0650439,"width":0.04654255,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Awaiting approval","depth":16,"bounds":{"left":0.8630319,"top":0.070231445,"width":0.033909574,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Submit review","depth":14,"bounds":{"left":0.9025931,"top":0.0650439,"width":0.03856383,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Submit","depth":16,"bounds":{"left":0.9055851,"top":0.070231445,"width":0.014793883,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"review","depth":16,"bounds":{"left":0.920379,"top":0.070231445,"width":0.012466756,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Open diff view settings","depth":14,"bounds":{"left":0.9438165,"top":0.0650439,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open overview panel","depth":14,"bounds":{"left":0.96143615,"top":0.0650439,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open comments panel","depth":14,"bounds":{"left":0.97207445,"top":0.0650439,"width":0.017287234,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"(","depth":16,"bounds":{"left":0.98038566,"top":0.070231445,"width":0.0026595744,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":16,"bounds":{"left":0.9830452,"top":0.070231445,"width":0.0026595744,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":16,"bounds":{"left":0.9857048,"top":0.070231445,"width":0.0014960107,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Filter files…","depth":16,"bounds":{"left":0.1015625,"top":0.11332801,"width":0.06815159,"height":0.023942538},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Filter options","depth":16,"bounds":{"left":0.17270611,"top":0.112529926,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"File tree","depth":15,"bounds":{"left":0.09059176,"top":0.15083799,"width":0.0003324468,"height":0.0007980846},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"File tree","depth":16,"bounds":{"left":0.09059176,"top":0.15363128,"width":0.014295213,"height":0.0518755},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":19,"bounds":{"left":0.1065492,"top":0.15682362,"width":0.008144947,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Console","depth":21,"bounds":{"left":0.10920878,"top":0.18276137,"width":0.017453458,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands/Crm","depth":23,"bounds":{"left":0.11186835,"top":0.20830008,"width":0.03474069,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Traits","depth":25,"bounds":{"left":0.114527926,"top":0.23383878,"width":0.011968086,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncObjectsCommandTrait.php","depth":27,"bounds":{"left":0.1171875,"top":0.25977653,"width":0.068317816,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncObjectsCommandTrait.php","depth":28,"bounds":{"left":0.1171875,"top":0.25977653,"width":0.068317816,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncHubspotObjects.php","depth":25,"bounds":{"left":0.114527926,"top":0.28531525,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncHubspotObjects.php","depth":26,"bounds":{"left":0.114527926,"top":0.28531525,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncObjects.php","depth":25,"bounds":{"left":0.114527926,"top":0.31085396,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncObjects.php","depth":26,"bounds":{"left":0.114527926,"top":0.31085396,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Kernel.php","depth":23,"bounds":{"left":0.11186835,"top":0.33639267,"width":0.023271276,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Kernel.php","depth":24,"bounds":{"left":0.11186835,"top":0.33639267,"width":0.023271276,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Http/Controllers/Webhook/Hubspot","depth":21,"bounds":{"left":0.10920878,"top":0.36193135,"width":0.07579787,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ProcessesWebhooksTrait.php","depth":23,"bounds":{"left":0.11186835,"top":0.38786912,"width":0.06333112,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ProcessesWebhooksTrait.php","depth":24,"bounds":{"left":0.11186835,"top":0.38786912,"width":0.06333112,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jobs/Crm","depth":21,"bounds":{"left":0.10920878,"top":0.41340783,"width":0.020777926,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncHubspotObjects.php","depth":23,"bounds":{"left":0.11186835,"top":0.43894652,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncHubspotObjects.php","depth":24,"bounds":{"left":0.11186835,"top":0.43894652,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SyncObjects.php","depth":23,"bounds":{"left":0.11186835,"top":0.46448523,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SyncObjects.php","depth":24,"bounds":{"left":0.11186835,"top":0.46448523,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Services/Crm/Hubspot/ServiceTraits","depth":21,"bounds":{"left":0.10920878,"top":0.49002394,"width":0.0774601,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"OpportunitySyncTrait.php","depth":23,"bounds":{"left":0.11186835,"top":0.51556265,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"OpportunitySyncTrait.php","depth":24,"bounds":{"left":0.11186835,"top":0.51556265,"width":0.05518617,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tests/Unit","depth":19,"bounds":{"left":0.1065492,"top":0.54110134,"width":0.020777926,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse file","depth":14,"bounds":{"left":0.19730718,"top":0.103751,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php","depth":15,"bounds":{"left":0.20794548,"top":0.10654429,"width":0.14162233,"height":0.016759777},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php","depth":16,"bounds":{"left":0.20794548,"top":0.10814046,"width":0.14162233,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php","depth":18,"bounds":{"left":0.20794548,"top":0.110135674,"width":0.14162233,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy file name to clipboard","depth":15,"bounds":{"left":0.3522274,"top":0.103751,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 81 additions & 0 deletions","depth":15,"bounds":{"left":0.90957445,"top":0.11612131,"width":0.019946808,"height":0.11412609},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Not Viewed","depth":14,"bounds":{"left":0.93583775,"top":0.103751,"width":0.026595745,"height":0.022346368},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Viewed","depth":16,"bounds":{"left":0.94547874,"top":0.108938545,"width":0.013962766,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Comment on this file","depth":14,"bounds":{"left":0.9650931,"top":0.103751,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"More options","depth":14,"bounds":{"left":0.97706115,"top":0.103751,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Original file line number","depth":17,"bounds":{"left":0.19464761,"top":0.0,"width":0.017952127,"height":0.04708699},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Original file line","depth":17,"bounds":{"left":0.21259974,"top":0.00518755,"width":0.018118352,"height":0.030327214},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line number","depth":17,"bounds":{"left":0.23071809,"top":0.0,"width":0.01761968,"height":0.04708699},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line change","depth":17,"bounds":{"left":0.24833776,"top":0.0,"width":0.016954787,"height":0.04708699},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -0,0 +1,81 @@","depth":18,"bounds":{"left":0.2159242,"top":0.0,"width":0.038397606,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"bounds":{"left":0.5972407,"top":0.017956903,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.017956903,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"<?php","depth":18,"bounds":{"left":0.61319816,"top":0.017956903,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"bounds":{"left":0.5972407,"top":0.037110932,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.037110932,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":16,"bounds":{"left":0.5972407,"top":0.056264963,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.056264963,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"declare","depth":18,"bounds":{"left":0.61319816,"top":0.056264963,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(strict_types=","depth":18,"bounds":{"left":0.6299867,"top":0.056264963,"width":0.03357713,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":18,"bounds":{"left":0.66356385,"top":0.056264963,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":");","depth":18,"bounds":{"left":0.66589093,"top":0.056264963,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":16,"bounds":{"left":0.5972407,"top":0.075418994,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.075418994,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":16,"bounds":{"left":0.5972407,"top":0.09457303,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.09457303,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"namespace","depth":18,"bounds":{"left":0.61319816,"top":0.09457303,"width":0.02144282,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny","depth":18,"bounds":{"left":0.6371343,"top":0.09457303,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"bounds":{"left":0.65392286,"top":0.09457303,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Console","depth":18,"bounds":{"left":0.65625,"top":0.09457303,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"bounds":{"left":0.67303854,"top":0.09457303,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":18,"bounds":{"left":0.6755319,"top":0.09457303,"width":0.019115692,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"bounds":{"left":0.6946476,"top":0.09457303,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Crm","depth":18,"bounds":{"left":0.69714093,"top":0.09457303,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"bounds":{"left":0.70428854,"top":0.09457303,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Traits","depth":18,"bounds":{"left":0.7066157,"top":0.09457303,"width":0.014461436,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"bounds":{"left":0.72107714,"top":0.09457303,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":16,"bounds":{"left":0.5972407,"top":0.113727055,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.113727055,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7","depth":16,"bounds":{"left":0.5972407,"top":0.13288109,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.13288109,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use","depth":18,"bounds":{"left":0.61319816,"top":0.13288109,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny","depth":18,"bounds":{"left":0.62267286,"top":0.13288109,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"bounds":{"left":0.63946146,"top":0.13288109,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jobs","depth":18,"bounds":{"left":0.6419548,"top":0.13288109,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"bounds":{"left":0.65142953,"top":0.13288109,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Job","depth":18,"bounds":{"left":0.65392286,"top":0.13288109,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"bounds":{"left":0.66107047,"top":0.13288109,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8","depth":16,"bounds":{"left":0.5972407,"top":0.15203512,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.15203512,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use","depth":18,"bounds":{"left":0.61319816,"top":0.15203512,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny","depth":18,"bounds":{"left":0.62267286,"top":0.15203512,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"bounds":{"left":0.63946146,"top":0.15203512,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Models","depth":18,"bounds":{"left":0.6419548,"top":0.15203512,"width":0.014295213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\\","depth":18,"bounds":{"left":0.65625,"top":0.15203512,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Team","depth":18,"bounds":{"left":0.6587433,"top":0.15203512,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"bounds":{"left":0.6682181,"top":0.15203512,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9","depth":16,"bounds":{"left":0.5972407,"top":0.17118914,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.17118914,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10","depth":16,"bounds":{"left":0.59607714,"top":0.19034317,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.19034317,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"trait","depth":18,"bounds":{"left":0.61319816,"top":0.19034317,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncObjectsCommandTrait","depth":18,"bounds":{"left":0.62516624,"top":0.19034317,"width":0.057513297,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":16,"bounds":{"left":0.59607714,"top":0.20949721,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.20949721,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"bounds":{"left":0.61319816,"top":0.20949721,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12","depth":16,"bounds":{"left":0.59607714,"top":0.22865124,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.22865124,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"abstract","depth":18,"bounds":{"left":0.62267286,"top":0.22865124,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"protected","depth":18,"bounds":{"left":0.6442819,"top":0.22865124,"width":0.021609042,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"bounds":{"left":0.6682181,"top":0.22865124,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getStaggerDelaySeconds","depth":18,"bounds":{"left":0.68982714,"top":0.22865124,"width":0.05285904,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"():","depth":18,"bounds":{"left":0.74268615,"top":0.22865124,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"float","depth":18,"bounds":{"left":0.75232714,"top":0.22865124,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"bounds":{"left":0.7642952,"top":0.22865124,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13","depth":16,"bounds":{"left":0.59607714,"top":0.24780527,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.24780527,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14","depth":16,"bounds":{"left":0.59607714,"top":0.2669593,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.2669593,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"abstract","depth":18,"bounds":{"left":0.62267286,"top":0.2669593,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"protected","depth":18,"bounds":{"left":0.6442819,"top":0.2669593,"width":0.021609042,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"bounds":{"left":0.6682181,"top":0.2669593,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getLogPrefix","depth":18,"bounds":{"left":0.68982714,"top":0.2669593,"width":0.028922873,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"():","depth":18,"bounds":{"left":0.71875,"top":0.2669593,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"string","depth":18,"bounds":{"left":0.72822475,"top":0.2669593,"width":0.014461436,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"bounds":{"left":0.74268615,"top":0.2669593,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15","depth":16,"bounds":{"left":0.59607714,"top":0.28611332,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.28611332,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16","depth":16,"bounds":{"left":0.59607714,"top":0.30526736,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.30526736,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"abstract","depth":18,"bounds":{"left":0.62267286,"top":0.30526736,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"protected","depth":18,"bounds":{"left":0.6442819,"top":0.30526736,"width":0.021609042,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"bounds":{"left":0.6682181,"top":0.30526736,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"createSyncJob","depth":18,"bounds":{"left":0.68982714,"top":0.30526736,"width":0.03125,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.72107714,"top":0.30526736,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Team","depth":18,"bounds":{"left":0.7234042,"top":0.30526736,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.73553854,"top":0.30526736,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"bounds":{"left":0.7378657,"top":0.30526736,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"bounds":{"left":0.7475067,"top":0.30526736,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Job","depth":18,"bounds":{"left":0.7546542,"top":0.30526736,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"bounds":{"left":0.76180184,"top":0.3044693,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17","depth":16,"bounds":{"left":0.59607714,"top":0.3236233,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.3236233,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18","depth":16,"bounds":{"left":0.59607714,"top":0.34277734,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.34277734,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"protected","depth":18,"bounds":{"left":0.62267286,"top":0.34277734,"width":0.021609042,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"bounds":{"left":0.64677525,"top":0.34277734,"width":0.019115692,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getMaxDelaySeconds","depth":18,"bounds":{"left":0.6682181,"top":0.34277734,"width":0.043218084,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(): ?","depth":18,"bounds":{"left":0.71143615,"top":0.34277734,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"int","depth":18,"bounds":{"left":0.7234042,"top":0.34277734,"width":0.00731383,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19","depth":16,"bounds":{"left":0.59607714,"top":0.36193135,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.36193135,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"bounds":{"left":0.61319816,"top":0.36193135,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20","depth":16,"bounds":{"left":0.59607714,"top":0.3810854,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.3810854,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return","depth":18,"bounds":{"left":0.63231385,"top":0.3810854,"width":0.014461436,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"null","depth":18,"bounds":{"left":0.6491024,"top":0.3810854,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"bounds":{"left":0.6587433,"top":0.3810854,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21","depth":16,"bounds":{"left":0.59607714,"top":0.40023944,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.40023944,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"bounds":{"left":0.61319816,"top":0.40023944,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"22","depth":16,"bounds":{"left":0.59607714,"top":0.41939345,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.41939345,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"23","depth":16,"bounds":{"left":0.59607714,"top":0.4385475,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.4385475,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"protected","depth":18,"bounds":{"left":0.62267286,"top":0.4385475,"width":0.021609042,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":18,"bounds":{"left":0.64677525,"top":0.4385475,"width":0.019115692,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dispatchSyncJobsForTeams","depth":18,"bounds":{"left":0.6682181,"top":0.4385475,"width":0.057679523,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.7258976,"top":0.4385475,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"iterable","depth":18,"bounds":{"left":0.72822475,"top":0.4385475,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.74983376,"top":0.4385475,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"teams","depth":18,"bounds":{"left":0.75232714,"top":0.4385475,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"):","depth":18,"bounds":{"left":0.7642952,"top":0.4385475,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"int","depth":18,"bounds":{"left":0.77144283,"top":0.4385475,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"24","depth":16,"bounds":{"left":0.59607714,"top":0.4577015,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.4577015,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":18,"bounds":{"left":0.61319816,"top":0.4577015,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25","depth":16,"bounds":{"left":0.59607714,"top":0.47685555,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.47685555,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.63231385,"top":0.47685555,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dispatchIndex","depth":18,"bounds":{"left":0.63464093,"top":0.47685555,"width":0.03125,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":18,"bounds":{"left":0.66589093,"top":0.47685555,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":18,"bounds":{"left":0.67303854,"top":0.47685555,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"bounds":{"left":0.6755319,"top":0.47685555,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"26","depth":16,"bounds":{"left":0.59607714,"top":0.4960096,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.4960096,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.63231385,"top":0.4960096,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"maxDelay","depth":18,"bounds":{"left":0.63464093,"top":0.4960096,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":18,"bounds":{"left":0.65392286,"top":0.4960096,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.66107047,"top":0.4960096,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":18,"bounds":{"left":0.66356385,"top":0.4960096,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.67303854,"top":0.4960096,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getMaxDelaySeconds","depth":18,"bounds":{"left":0.67785907,"top":0.4960096,"width":0.043218084,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"();","depth":18,"bounds":{"left":0.72107714,"top":0.4960096,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"27","depth":16,"bounds":{"left":0.59607714,"top":0.5151636,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.5151636,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"28","depth":16,"bounds":{"left":0.59607714,"top":0.5343176,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.5343176,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"foreach","depth":18,"bounds":{"left":0.63231385,"top":0.5343176,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.6491024,"top":0.5343176,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.65392286,"top":0.5343176,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"teams","depth":18,"bounds":{"left":0.65625,"top":0.5343176,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"as","depth":18,"bounds":{"left":0.67071146,"top":0.5343176,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.67785907,"top":0.5343176,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"bounds":{"left":0.6803524,"top":0.5343176,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") {","depth":18,"bounds":{"left":0.68982714,"top":0.5343176,"width":0.00731383,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"29","depth":16,"bounds":{"left":0.59607714,"top":0.5502793,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.5502793,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.6419548,"top":0.5502793,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"config","depth":18,"bounds":{"left":0.6442819,"top":0.5502793,"width":0.014461436,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":18,"bounds":{"left":0.6587433,"top":0.5502793,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.66589093,"top":0.5502793,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"bounds":{"left":0.6682181,"top":0.5502793,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.67785907,"top":0.5502793,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getCrmConfiguration","depth":18,"bounds":{"left":0.68267953,"top":0.5502793,"width":0.045545213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"();","depth":18,"bounds":{"left":0.72822475,"top":0.5502793,"width":0.00731383,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30","depth":16,"bounds":{"left":0.59607714,"top":0.56943333,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.56943333,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31","depth":16,"bounds":{"left":0.59607714,"top":0.5885874,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.5885874,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if","depth":18,"bounds":{"left":0.6419548,"top":0.5885874,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.64677525,"top":0.5885874,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.65142953,"top":0.5885874,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"config","depth":18,"bounds":{"left":0.65392286,"top":0.5885874,"width":0.014295213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.6682181,"top":0.5885874,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getAttribute","depth":18,"bounds":{"left":0.67303854,"top":0.5885874,"width":0.028922873,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.70196146,"top":0.5885874,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"bounds":{"left":0.70428854,"top":0.5885874,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sync_objects","depth":18,"bounds":{"left":0.7066157,"top":0.5885874,"width":0.028922873,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"bounds":{"left":0.73553854,"top":0.5885874,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") ===","depth":18,"bounds":{"left":0.7378657,"top":0.5885874,"width":0.014461436,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"false","depth":18,"bounds":{"left":0.75232714,"top":0.5885874,"width":0.011968086,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") {","depth":18,"bounds":{"left":0.7642952,"top":0.5885874,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"32","depth":16,"bounds":{"left":0.59607714,"top":0.6077414,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.6077414,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"continue","depth":18,"bounds":{"left":0.65142953,"top":0.6077414,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"bounds":{"left":0.67071146,"top":0.6077414,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add comment","depth":17,"bounds":{"left":0.6015625,"top":0.60415006,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More actions","depth":17,"bounds":{"left":0.98138297,"top":0.60415006,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"33","depth":16,"bounds":{"left":0.59607714,"top":0.6268954,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.6268954,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"bounds":{"left":0.61319816,"top":0.6268954,"width":0.031083776,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"34","depth":16,"bounds":{"left":0.59607714,"top":0.63168395,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.63168395,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"35","depth":16,"bounds":{"left":0.59607714,"top":0.650838,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.650838,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if","depth":18,"bounds":{"left":0.6419548,"top":0.650838,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.64677525,"top":0.650838,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.65142953,"top":0.650838,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"bounds":{"left":0.65392286,"top":0.650838,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.66356385,"top":0.650838,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getAttribute","depth":18,"bounds":{"left":0.6682181,"top":0.650838,"width":0.028922873,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.69714093,"top":0.650838,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"bounds":{"left":0.6994681,"top":0.650838,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"owner_id","depth":18,"bounds":{"left":0.70196146,"top":0.650838,"width":0.019115692,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"bounds":{"left":0.72107714,"top":0.650838,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") ===","depth":18,"bounds":{"left":0.7234042,"top":0.650838,"width":0.014461436,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"null","depth":18,"bounds":{"left":0.7378657,"top":0.650838,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") {","depth":18,"bounds":{"left":0.7475067,"top":0.650838,"width":0.0071476065,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"36","depth":16,"bounds":{"left":0.59607714,"top":0.669992,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.669992,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.65142953,"top":0.669992,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":18,"bounds":{"left":0.65392286,"top":0.669992,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.66356385,"top":0.669992,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"error","depth":18,"bounds":{"left":0.6682181,"top":0.669992,"width":0.012134309,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.6803524,"top":0.669992,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sprintf","depth":18,"bounds":{"left":0.68267953,"top":0.669992,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.6994681,"top":0.669992,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"37","depth":16,"bounds":{"left":0.59607714,"top":0.68914604,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.68914604,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"bounds":{"left":0.66107047,"top":0.68914604,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Team %s (%s) is not yet assigned an owner. skipping...","depth":18,"bounds":{"left":0.66356385,"top":0.68914604,"width":0.12948804,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"bounds":{"left":0.79305184,"top":0.68914604,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":18,"bounds":{"left":0.795379,"top":0.68914604,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"38","depth":16,"bounds":{"left":0.59607714,"top":0.70830005,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.70830005,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.66107047,"top":0.70830005,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"bounds":{"left":0.66356385,"top":0.70830005,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.67303854,"top":0.70830005,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getName","depth":18,"bounds":{"left":0.67785907,"top":0.70830005,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(),","depth":18,"bounds":{"left":0.6946476,"top":0.70830005,"width":0.00731383,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"39","depth":16,"bounds":{"left":0.59607714,"top":0.7274541,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.7274541,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.66107047,"top":0.7274541,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"bounds":{"left":0.66356385,"top":0.7274541,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.67303854,"top":0.7274541,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUuid","depth":18,"bounds":{"left":0.67785907,"top":0.7274541,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()","depth":18,"bounds":{"left":0.6946476,"top":0.7274541,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"40","depth":16,"bounds":{"left":0.59607714,"top":0.74660814,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.74660814,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"));","depth":18,"bounds":{"left":0.61319816,"top":0.74660814,"width":0.045545213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"41","depth":16,"bounds":{"left":0.59607714,"top":0.76576215,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.76576215,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"42","depth":16,"bounds":{"left":0.59607714,"top":0.7849162,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.7849162,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"continue","depth":18,"bounds":{"left":0.65142953,"top":0.7849162,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"bounds":{"left":0.67071146,"top":0.7849162,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"43","depth":16,"bounds":{"left":0.59607714,"top":0.80407023,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.80407023,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"bounds":{"left":0.61319816,"top":0.80407023,"width":0.031083776,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"44","depth":16,"bounds":{"left":0.59607714,"top":0.82322425,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.82322425,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"45","depth":16,"bounds":{"left":0.59607714,"top":0.8423783,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.8423783,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if","depth":18,"bounds":{"left":0.6419548,"top":0.8423783,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.64677525,"top":0.8423783,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.65142953,"top":0.8423783,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"config","depth":18,"bounds":{"left":0.65392286,"top":0.8423783,"width":0.014295213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.6682181,"top":0.8423783,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getAttribute","depth":18,"bounds":{"left":0.67303854,"top":0.8423783,"width":0.028922873,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.70196146,"top":0.8423783,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"bounds":{"left":0.70428854,"top":0.8423783,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"over_quota_at","depth":18,"bounds":{"left":0.7066157,"top":0.8423783,"width":0.03125,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"bounds":{"left":0.7378657,"top":0.8320032,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") ||","depth":18,"bounds":{"left":0.74019283,"top":0.8320032,"width":0.012134309,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.75232714,"top":0.8320032,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"config","depth":18,"bounds":{"left":0.7546542,"top":0.8320032,"width":0.014461436,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.7691157,"top":0.8320032,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getAttribute","depth":18,"bounds":{"left":0.77393615,"top":0.8320032,"width":0.028756648,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.80269283,"top":0.8320032,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"bounds":{"left":0.80502,"top":0.8320032,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"api_disabled_at","depth":18,"bounds":{"left":0.8075133,"top":0.8320032,"width":0.035904255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"bounds":{"left":0.8434175,"top":0.8320032,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")) {","depth":18,"bounds":{"left":0.8459109,"top":0.8320032,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"46","depth":16,"bounds":{"left":0.59607714,"top":0.85115725,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.85115725,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.65142953,"top":0.85115725,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":18,"bounds":{"left":0.65392286,"top":0.85115725,"width":0.009640957,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.66356385,"top":0.85115725,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"error","depth":18,"bounds":{"left":0.6682181,"top":0.85115725,"width":0.012134309,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.6803524,"top":0.85115725,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sprintf","depth":18,"bounds":{"left":0.68267953,"top":0.85115725,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.6994681,"top":0.85115725,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"47","depth":16,"bounds":{"left":0.59607714,"top":0.87031126,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.87031126,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"bounds":{"left":0.66107047,"top":0.87031126,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Team %s (%s) API unavailable... skipping...","depth":18,"bounds":{"left":0.66356385,"top":0.87031126,"width":0.10305851,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":18,"bounds":{"left":0.76662236,"top":0.87031126,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":18,"bounds":{"left":0.7691157,"top":0.87031126,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"48","depth":16,"bounds":{"left":0.59607714,"top":0.8894653,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.8894653,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.66107047,"top":0.8894653,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"bounds":{"left":0.66356385,"top":0.8894653,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.67303854,"top":0.8894653,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getName","depth":18,"bounds":{"left":0.67785907,"top":0.8894653,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(),","depth":18,"bounds":{"left":0.6946476,"top":0.8894653,"width":0.00731383,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"49","depth":16,"bounds":{"left":0.59607714,"top":0.9086193,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.9086193,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":18,"bounds":{"left":0.66107047,"top":0.9086193,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"team","depth":18,"bounds":{"left":0.66356385,"top":0.9086193,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":18,"bounds":{"left":0.67303854,"top":0.9086193,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getUuid","depth":18,"bounds":{"left":0.67785907,"top":0.9086193,"width":0.016788565,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"()","depth":18,"bounds":{"left":0.6946476,"top":0.9086193,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50","depth":16,"bounds":{"left":0.59607714,"top":0.915004,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.915004,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"));","depth":18,"bounds":{"left":0.61319816,"top":0.915004,"width":0.045545213,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"51","depth":16,"bounds":{"left":0.59607714,"top":0.934158,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.934158,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"52","depth":16,"bounds":{"left":0.59607714,"top":0.95331204,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.95331204,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"continue","depth":18,"bounds":{"left":0.65142953,"top":0.95331204,"width":0.019281914,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":18,"bounds":{"left":0.67071146,"top":0.95331204,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"53","depth":16,"bounds":{"left":0.59607714,"top":0.9724661,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"+","depth":18,"bounds":{"left":0.607879,"top":0.9724661,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":18,"bounds":{"left":0.61319816,"top":0.9724661,"width":0.031083776,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"54","depth":16,"bounds":{"left":0.59607714,"top":0.9916201,"width":0.0048204786,"height":0.008379877},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8930799482253213216
|
8164322210142579137
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board 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
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
JY-20701 | Reschedule HubSpot Sync Objects by yalokin-jiminny · Pull Request #11989 · jiminny/app
Close tab
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
New Tab
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (21)
Security and quality
(
21
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
JY-20701 | Reschedule HubSpot Sync Objects #11989 Edit title
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
Edit title
Preview
Preview
Awaiting approval
Awaiting approval
Code
Code
Open
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
Lines changed: 949 additions & 97 deletions
Conversation (5)
Conversation
(
5
)
Commits (22)
Commits
(
22
)
Checks (3)
Checks
(
3
)
Files changed (11)
Files changed
(
11
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
Open
JY-20701 | Reschedule HubSpot Sync Objects
JY-20701 | Reschedule HubSpot Sync Objects
#
11989
All commits
All commits
yalokin-jiminny
yalokin-jiminny
wants to merge 22 commits into
master
master
from
JY-20701-reschedule-HubSpot-processing
JY-20701-reschedule-HubSpot-processing
Copy head branch name to clipboard
1
/
11
viewed
Awaiting approval
Awaiting approval
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Console
Commands/Crm
Traits
SyncObjectsCommandTrait.php
SyncObjectsCommandTrait.php
SyncHubspotObjects.php
SyncHubspotObjects.php
SyncObjects.php
SyncObjects.php
Kernel.php
Kernel.php
Http/Controllers/Webhook/Hubspot
ProcessesWebhooksTrait.php
ProcessesWebhooksTrait.php
Jobs/Crm
SyncHubspotObjects.php
SyncHubspotObjects.php
SyncObjects.php
SyncObjects.php
Services/Crm/Hubspot/ServiceTraits
OpportunitySyncTrait.php
OpportunitySyncTrait.php
tests/Unit
Collapse file
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
Copy file name to clipboard
Lines changed: 81 additions & 0 deletions
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -0,0 +1,81 @@
1
+
<?php
2
+
3
+
declare
(strict_types=
1
);
4
+
5
+
namespace
Jiminny
\
Console
\
Commands
\
Crm
\
Traits
;
6
+
7
+
use
Jiminny
\
Jobs
\
Job
;
8
+
use
Jiminny
\
Models
\
Team
;
9
+
10
+
trait
SyncObjectsCommandTrait
11
+
{
12
+
abstract
protected
function
getStaggerDelaySeconds
():
float
;
13
+
14
+
abstract
protected
function
getLogPrefix
():
string
;
15
+
16
+
abstract
protected
function
createSyncJob
(
Team
$
team
):
Job
;
17
+
18
+
protected
function
getMaxDelaySeconds
(): ?
int
19
+
{
20
+
return
null
;
21
+
}
22
+
23
+
protected
function
dispatchSyncJobsForTeams
(
iterable
$
teams
):
int
24
+
{
25
+
$
dispatchIndex
=
0
;
26
+
$
maxDelay
=
$
this
->
getMaxDelaySeconds
();
27
+
28
+
foreach
(
$
teams
as
$
team
) {
29
+
$
config
=
$
team
->
getCrmConfiguration
();
30
+
31
+
if
(
$
config
->
getAttribute
(
'
sync_objects
'
) ===
false
) {
32
+
continue
;
Add comment
More actions
33
+
}
34
+
35
+
if
(
$
team
->
getAttribute
(
'
owner_id
'
) ===
null
) {
36
+
$
this
->
error
(
sprintf
(
37
+
'
Team %s (%s) is not yet assigned an owner. skipping...
'
,
38
+
$
team
->
getName
(),
39
+
$
team
->
getUuid
()
40
+
));
41
+
42
+
continue
;
43
+
}
44
+
45
+
if
(
$
config
->
getAttribute
(
'
over_quota_at
'
) ||
$
config
->
getAttribute
(
'
api_disabled_at
'
)) {
46
+
$
this
->
error
(
sprintf
(
47
+
'
Team %s (%s) API unavailable... skipping...
'
,
48
+
$
team
->
getName
(),
49
+
$
team
->
getUuid
()
50
+
));
51
+
52
+
continue
;
53
+
}
54...
|
NULL
|
|
81188
|
2160
|
13
|
2026-04-25T16:06:00.133267+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-25/1777 /Users/lukas/.screenpipe/data/data/2026-04-25/1777133160133_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Fri Apr 24 12:59:23 on ttys009
Poetry Last login: Fri Apr 24 12:59:23 on ttys009
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 ~ $ cd ~/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ do -sh ~/.screenpipe
zsh: parse error near `do'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
13G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data/data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll
total 40
drwxr-xr-x 17 lukas staff 544 24 Apr 09:19 .
drwxr-xr-x 167 lukas staff 5344 18 Apr 14:45 ..
-rw-r--r--@ 1 lukas staff 18436 18 Apr 14:45 .DS_Store
drwxr-xr-x 14 lukas staff 448 11 Apr 14:53 2026-04-09
drwxr-xr-x 30 lukas staff 960 12 Apr 09:02 2026-04-11
drwxr-xr-x 46 lukas staff 1472 13 Apr 15:13 2026-04-12
drwxr-xr-x 71 lukas staff 2272 14 Apr 09:24 2026-04-13
drwxr-xr-x 247 lukas staff 7904 15 Apr 09:59 2026-04-14
drwxr-xr-x 243 lukas staff 7776 16 Apr 09:13 2026-04-15
drwxr-xr-x 234 lukas staff 7488 17 Apr 08:57 2026-04-16
drwxr-xr-x 229 lukas staff 7328 18 Apr 13:35 2026-04-17
drwxr-xr-x 19 lukas staff 608 20 Apr 09:10 2026-04-18
drwxr-xr-x 194 lukas staff 6208 21 Apr 09:10 2026-04-20
drwxr-xr-x 248 lukas staff 7936 22 Apr 09:16 2026-04-21
drwxr-xr-x 224 lukas staff 7168 23 Apr 09:14 2026-04-22
drwxr-xr-x 106 lukas staff 3392 24 Apr 09:20 2026-04-23
drwxr-xr-x 292 lukas staff 9344 24 Apr 13:54 2026-04-24
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll
total 40
drwxr-xr-x 18 lukas staff 576 25 Apr 17:25 .
drwxr-xr-x 167 lukas staff 5344 18 Apr 14:45 ..
-rw-r--r--@ 1 lukas staff 18436 18 Apr 14:45 .DS_Store
drwxr-xr-x 14 lukas staff 448 11 Apr 14:53 2026-04-09
drwxr-xr-x 30 lukas staff 960 12 Apr 09:02 2026-04-11
drwxr-xr-x 46 lukas staff 1472 13 Apr 15:13 2026-04-12
drwxr-xr-x 71 lukas staff 2272 14 Apr 09:24 2026-04-13
drwxr-xr-x 247 lukas staff 7904 15 Apr 09:59 2026-04-14
drwxr-xr-x 243 lukas staff 7776 16 Apr 09:13 2026-04-15
drwxr-xr-x 234 lukas staff 7488 17 Apr 08:57 2026-04-16
drwxr-xr-x 229 lukas staff 7328 18 Apr 13:35 2026-04-17
drwxr-xr-x 19 lukas staff 608 20 Apr 09:10 2026-04-18
drwxr-xr-x 194 lukas staff 6208 21 Apr 09:10 2026-04-20
drwxr-xr-x 248 lukas staff 7936 22 Apr 09:16 2026-04-21
drwxr-xr-x 224 lukas staff 7168 23 Apr 09:14 2026-04-22
drwxr-xr-x 106 lukas staff 3392 24 Apr 09:20 2026-04-23
drwxr-xr-x 252 lukas staff 8064 24 Apr 22:30 2026-04-24
drwxr-xr-x 16 lukas staff 512 25 Apr 17:26 2026-04-25
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd 2026-04-24
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-24 $ ll
total 292176
drwxr-xr-x 252 lukas staff 8064 24 Apr 22:30 .
drwxr-xr-x 18 lukas staff 576 25 Apr 17:25 ..
-rw-r--r-- 1 lukas staff 1638831 24 Apr 09:31 compact_monitor_1_1777012261836.mp4
-rw-r--r-- 1 lukas staff 1391180 24 Apr 09:36 compact_monitor_1_1777012574636.mp4
-rw-r--r-- 1 lukas staff 2989162 24 Apr 09:41 compact_monitor_1_1777012889540.mp4
-rw-r--r-- 1 lukas staff 4053896 24 Apr 09:46 compact_monitor_1_1777013205196.mp4
-rw-r--r-- 1 lukas staff 2108331 24 Apr 09:51 compact_monitor_1_1777013517721.mp4
-rw-r--r-- 1 lukas staff 3158147 24 Apr 09:57 compact_monitor_1_1777013833236.mp4
-rw-r--r-- 1 lukas staff 224863 24 Apr 10:02 compact_monitor_1_1777014148462.mp4
-rw-r--r-- 1 lukas staff 224587 24 Apr 10:07 compact_monitor_1_1777014455847.mp4
-rw-r--r-- 1 lukas staff 223207 24 Apr 10:12 compact_monitor_1_1777014761287.mp4
-rw-r--r-- 1 lukas staff 224863 24 Apr 10:17 compact_monitor_1_1777015066130.mp4
-rw-r--r-- 1 lukas staff 223483 24 Apr 10:22 compact_monitor_1_1777015372226.mp4
-rw-r--r-- 1 lukas staff 222793 24 Apr 10:28 compact_monitor_1_1777015681605.mp4
-rw-r--r-- 1 lukas staff 224725 24 Apr 10:33 compact_monitor_1_1777015992029.mp4
-rw-r--r-- 1 lukas staff 225829 24 Apr 10:38 compact_monitor_1_1777016303248.mp4
-rw-r--r-- 1 lukas staff 225830 24 Apr 10:43 compact_monitor_1_1777016610979.mp4
-rw-r--r-- 1 lukas staff 228313 24 Apr 10:48 compact_monitor_1_1777016922353.mp4
-rw-r--r-- 1 lukas staff 227763 24 Apr 10:53 compact_monitor_1_1777017228818.mp4
-rw-r--r-- 1 lukas staff 223483 24 Apr 10:58 compact_monitor_1_1777017535961.mp4
-rw-r--r-- 1 lukas staff 223069 24 Apr 11:04 compact_monitor_1_1777017848118.mp4
-rw-r--r-- 1 lukas staff 224449 24 Apr 11:09 compact_monitor_1_1777018160122.mp4
-rw-r--r-- 1 lukas staff 225277 24 Apr 11:14 compact_monitor_1_1777018473585.mp4
-rw-r--r-- 1 lukas staff 226243 24 Apr 11:19 compact_monitor_1_1777018786981.mp4
-rw-r--r-- 1 lukas staff 226659 24 Apr 11:25 compact_monitor_1_1777019099556.mp4
-rw-r--r-- 1 lukas staff 227486 24 Apr 11:30 compact_monitor_1_1777019413061.mp4
-rw-r--r-- 1 lukas staff 225001 24 Apr 11:35 compact_monitor_1_1777019726395.mp4
-rw-r--r-- 1 lukas staff 226520 24 Apr 11:40 compact_monitor_1_1777020029531.mp4
-rw-r--r-- 1 lukas staff 223759 24 Apr 11:45 compact_monitor_1_1777020336492.mp4
-rw-r--r-- 1 lukas staff 222793 24 Apr 11:50 compact_monitor_1_1777020646184.mp4
-rw-r--r-- 1 lukas staff 222793 24 Apr 11:55 compact_monitor_1_1777020957673.mp4
-rw-r--r-- 1 lukas staff 227210 24 Apr 12:01 compact_monitor_1_1777021268422.mp4
-rw-r--r-- 1 lukas staff 230247 24 Apr 12:06 compact_monitor_1_1777021581300.mp4
-rw-r--r-- 1 lukas staff 229281 24 Apr 12:11 compact_monitor_1_1777021897044.mp4
-rw-r--r-- 1 lukas staff 227486 24 Apr 12:16 compact_monitor_1_1777022205733.mp4
-rw-r--r-- 1 lukas staff 224863 24 Apr 12:21 compact_monitor_1_1777022515833.mp4
-rw-r--r-- 1 lukas staff 222793 24 Apr 12:27 compact_monitor_1_1777022827784.mp4
-rw-r--r-- 1 lukas staff 225001 24 Apr 12:32 compact_monitor_1_1777023130468.mp4
-rw-r--r-- 1 lukas staff 223759 24 Apr 12:37 compact_monitor_1_1777023438384.mp4
-rw-r--r-- 1 lukas staff 223207 24 Apr 12:42 compact_monitor_1_1777023742059.mp4
-rw-r--r-- 1 lukas staff 223345 24 Apr 12:47 compact_monitor_1_1777024048142.mp4
-rw-r--r-- 1 lukas staff 223621 24 Apr 12:52 compact_monitor_1_1777024357357.mp4
-rw-r--r-- 1 lukas staff 226795 24 Apr 13:25 compact_monitor_1_1777026334121.mp4
-rw-r--r-- 1 lukas staff 74262 24 Apr 13:36 compact_monitor_1_1777026960071.mp4
-rw-r--r-- 1 lukas staff 75007 24 Apr 13:41 compact_monitor_1_1777027271559.mp4
-rw-r--r-- 1 lukas staff 66030 24 Apr 13:46 compact_monitor_1_1777027588021.mp4
-rw-r--r-- 1 lukas staff 206995 24 Apr 13:51 compact_monitor_1_1777027891692.mp4
-rw-r--r-- 1 lukas staff 1470509 24 Apr 13:56 compact_monitor_1_1777028193924.mp4
-rw-r--r-- 1 lukas staff 63562 24 Apr 14:01 compact_monitor_1_1777028500650.mp4
-rw-r--r-- 1 lukas staff 63177 24 Apr 14:06 compact_monitor_1_1777028811691.mp4
-rw-r--r-- 1 lukas staff 65865 24 Apr 14:11 compact_monitor_1_1777029114984.mp4
-rw-r--r-- 1 lukas staff 62921 24 Apr 14:17 compact_monitor_1_1777029426109.mp4
-rw-r--r-- 1 lukas staff 61129 24 Apr 14:22 compact_monitor_1_1777029733317.mp4
-rw-r--r-- 1 lukas staff 61001 24 Apr 14:27 compact_monitor_1_1777030036330.mp4
-rw-r--r-- 1 lukas staff 61001 24 Apr 14:32 compact_monitor_1_1777030338771.mp4
-rw-r--r-- 1 lukas staff 61001 24 Apr 14:37 compact_monitor_1_1777030647353.mp4
-rw-r--r-- 1 lukas staff 61001 24 Apr 14:42 compact_monitor_1_1777030956098.mp4
-rw-r--r-- 1 lukas staff 60873 24 Apr 14:47 compact_monitor_1_1777031264764.mp4
-rw-r--r-- 1 lukas staff 65995 24 Apr 14:52 compact_monitor_1_1777031573441.mp4
-rw-r--r-- 1 lukas staff 62793 24 Apr 14:58 compact_monitor_1_1777031879569.mp4
-rw-r--r-- 1 lukas staff 61513 24 Apr 15:03 compact_monitor_1_1777032188612.mp4
-rw-r--r-- 1 lukas staff 61129 24 Apr 15:08 compact_monitor_1_1777032494307.mp4
-rw-r--r-- 1 lukas staff 62025 24 Apr 15:13 compact_monitor_1_1777032798963.mp4
-rw-r--r-- 1 lukas staff 61897 24 Apr 15:18 compact_monitor_1_1777033108532.mp4
-rw-r--r-- 1 lukas staff 61001 24 Apr 15:23 compact_monitor_1_1777033411928.mp4
-rw-r--r-- 1 lukas staff 57493 24 Apr 15:28 compact_monitor_1_1777033714810.mp4
-rw-r--r-- 1 lukas staff 372372 24 Apr 16:29 compact_monitor_1_1777037355438.mp4
-rw-r--r-- 1 lukas staff 411247 24 Apr 16:34 compact_monitor_1_1777037663371.mp4
-rw-r--r-- 1 lukas staff 616103 24 Apr 16:39 compact_monitor_1_1777037967552.mp4
-rw-r--r-- 1 lukas staff 338030 24 Apr 16:44 compact_monitor_1_1777038278174.mp4
-rw-r--r-- 1 lukas staff 336601 24 Apr 16:49 compact_monitor_1_1777038589136.mp4
-rw-r--r-- 1 lukas staff 1198645 24 Apr 16:55 compact_monitor_1_1777038901569.mp4
-rw-r--r-- 1 lukas staff 573966 24 Apr 17:00 compact_monitor_1_1777039221027.mp4
-rw-r--r-- 1 lukas staff 501809 24 Apr 17:05 compact_monitor_1_1777039538961.mp4
-rw-r--r-- 1 lukas staff 343102 24 Apr 17:10 compact_monitor_1_1777039845665.mp4
-rw-r--r-- 1 lukas staff 339201 24 Apr 17:15 compact_monitor_1_1777040154006.mp4
-rw-r--r-- 1 lukas staff 336696 24 Apr 17:20 compact_monitor_1_1777040458288.mp4
-rw-r--r-- 1 lukas staff 336768 24 Apr 17:26 compact_monitor_1_1777040767579.mp4
-rw-r--r-- 1 lukas staff 336733 24 Apr 17:31 compact_monitor_1_1777041080182.mp4
-rw-r--r-- 1 lukas staff 336774 24 Apr 17:36 compact_monitor_1_1777041388935.mp4
-rw-r--r-- 1 lukas staff 1041183 24 Apr 17:41 compact_monitor_1_1777041693870.mp4
-rw-r--r-- 1 lukas staff 209140 24 Apr 17:46 compact_monitor_1_1777042002848.mp4
-rw-r--r-- 1 lukas staff 208555 24 Apr 17:51 compact_monitor_1_1777042306433.mp4
-rw-r--r-- 1 lukas staff 353704 24 Apr 18:42 compact_monitor_1_1777045344500.mp4
-rw-r--r-- 1 lukas staff 209852 24 Apr 18:47 compact_monitor_1_1777045659150.mp4
-rw-r--r-- 1 lukas staff 761800 24 Apr 18:52 compact_monitor_1_1777045973244.mp4
-rw-r--r-- 1 lukas staff 511983 24 Apr 18:58 compact_monitor_1_1777046302568.mp4
-rw-r--r-- 1 lukas staff 376881 24 Apr 19:03 compact_monitor_1_1777046622649.mp4
-rw-r--r-- 1 lukas staff 2135572 24 Apr 19:09 compact_monitor_1_1777046942527.mp4
-rw-r--r-- 1 lukas staff 2067005 24 Apr 19:14 compact_monitor_1_1777047252013.mp4
-rw-r--r-- 1 lukas staff 325852 24 Apr 19:19 compact_monitor_1_1777047554283.mp4
-rw-r--r-- 1 lukas staff 1326420 24 Apr 19:24 compact_monitor_1_1777047857184.mp4
-rw-r--r-- 1 lukas staff 281500 24 Apr 19:29 compact_monitor_1_1777048160060.mp4
-rw-r--r-- 1 lukas staff 375074 24 Apr 19:34 compact_monitor_1_1777048463034.mp4
-rw-r--r-- 1 lukas staff 443180 24 Apr 19:39 compact_monitor_1_1777048765957.mp4
-rw-r--r-- 1 lukas staff 284143 24 Apr 19:44 compact_monitor_1_1777049071027.mp4
-rw-r--r-- 1 lukas staff 370030 24 Apr 19:49 compact_monitor_1_1777049375483.mp4
-rw-r--r-- 1 lukas staff 282964 24 Apr 19:54 compact_monitor_1_1777049679741.mp4
-rw-r--r-- 1 lukas staff 284261 24 Apr 19:59 compact_monitor_1_1777049981944.mp4
-rw-r--r-- 1 lukas staff 283679 24 Apr 20:04 compact_monitor_1_1777050284761.mp4
-rw-r--r-- 1 lukas staff 459716 24 Apr 20:09 compact_monitor_1_1777050586972.mp4
-rw-r--r-- 1 lukas staff 282329 24 Apr 20:14 compact_monitor_1_1777050889084.mp4
-rw-r--r-- 1 lukas staff 284125 24 Apr 20:19 compact_monitor_1_1777051190676.mp4
-rw-r--r-- 1 lukas staff 285974 24 Apr 20:24 compact_monitor_1_1777051493257.mp4
-rw-r--r-- 1 lukas staff 388518 24 Apr 20:29 compact_monitor_1_1777051796486.mp4
-rw-r--r-- 1 lukas staff 281872 24 Apr 20:35 compact_monitor_1_1777052102980.mp4
-rw-r--r-- 1 lukas staff 378553 24 Apr 20:40 compact_monitor_1_1777052404622.mp4
-rw-r--r-- 1 lukas staff 286022 24 Apr 20:45 compact_monitor_1_1777052707340.mp4
-rw-r--r-- 1 lukas staff 281962 24 Apr 20:50 compact_monitor_1_1777053011638.mp4
-rw-r--r-- 1 lukas staff 266081 24 Apr 20:55 compact_monitor_1_1777053316848.mp4
-rw-r--r-- 1 lukas staff 280935 24 Apr 21:05 compact_monitor_1_1777053917985.mp4
-rw-r--r-- 1 lukas staff 382542 24 Apr 21:10 compact_monitor_1_1777054219554.mp4
-rw-r--r-- 1 lukas staff 284199 24 Apr 21:15 compact_monitor_1_1777054523505.mp4
-rw-r--r-- 1 lukas staff 283100 24 Apr 21:20 compact_monitor_1_1777054827421.mp4
-rw-r--r-- 1 lukas staff 281910 24 Apr 21:25 compact_monitor_1_1777055133913.mp4
-rw-r--r-- 1 lukas staff 282076 24 Apr 21:30 compact_monitor_1_1777055435796.mp4
-rw-r--r-- 1 lukas staff 281620 24 Apr 21:35 compact_monitor_1_1777055737420.mp4
-rw-r--r-- 1 lukas staff 379003 24 Apr 21:40 compact_monitor_1_1777056039080.mp4
-rw-r--r-- 1 lukas staff 281563 24 Apr 21:45 compact_monitor_1_1777056341894.mp4
-rw-r--r-- 1 lukas staff 282224 24 Apr 21:50 compact_monitor_1_1777056643558.mp4
-rw-r--r-- 1 lukas staff 283065 24 Apr 21:55 compact_monitor_1_1777056945182.mp4
-rw-r--r-- 1 lukas staff 282611 24 Apr 22:00 compact_monitor_1_1777057247444.mp4
-rw-r--r-- 1 lukas staff 281790 24 Apr 22:05 compact_monitor_1_1777057549868.mp4
-rw-r--r-- 1 lukas staff 254088 24 Apr 22:10 compact_monitor_1_1777057853482.mp4
-rw-r--r-- 1 lukas staff 283072 24 Apr 22:20 compact_monitor_1_1777058454256.mp4
-rw-r--r-- 1 lukas staff 281845 24 Apr 22:25 compact_monitor_1_1777058756125.mp4
-rw-r--r-- 1 lukas staff 280140 24 Apr 22:30 compact_monitor_1_1777059057712.mp4
-rw-r--r-- 1 lukas staff 607703 24 Apr 09:31 compact_monitor_2_1777012263153.mp4
-rw-r--r-- 1 lukas staff 2606372 24 Apr 09:36 compact_monitor_2_1777012577621.mp4
-rw-r--r-- 1 lukas staff 2186625 24 Apr 09:41 compact_monitor_2_1777012892871.mp4
-rw-r--r-- 1 lukas staff 2139431 24 Apr 09:46 compact_monitor_2_1777013207979.mp4
-rw-r--r-- 1 lukas staff 3770878 24 Apr 09:52 compact_monitor_2_1777013519888.mp4
-rw-r--r-- 1 lukas staff 4167633 24 Apr 09:57 compact_monitor_2_1777013838804.mp4
-rw-r--r-- 1 lukas staff 359177 24 Apr 10:02 compact_monitor_2_1777014150124.mp4
-rw-r--r-- 1 lukas staff 358343 24 Apr 10:07 compact_monitor_2_1777014457309.mp4
-rw-r--r-- 1 lukas staff 356953 24 Apr 10:12 compact_monitor_2_1777014762166.mp4
-rw-r--r-- 1 lukas staff 358899 24 Apr 10:17 compact_monitor_2_1777015067707.mp4
-rw-r--r-- 1 lukas staff 357509 24 Apr 10:22 compact_monitor_2_1777015373242.mp4
-rw-r--r-- 1 lukas staff 356675 24 Apr 10:28 compact_monitor_2_1777015682416.mp4
-rw-r--r-- 1 lukas staff 358899 24 Apr 10:33 compact_monitor_2_1777015994313.mp4
-rw-r--r-- 1 lukas staff 359177 24 Apr 10:38 compact_monitor_2_1777016305302.mp4
-rw-r--r-- 1 lukas staff 360151 24 Apr 10:43 compact_monitor_2_1777016613033.mp4
-rw-r--r-- 1 lukas staff 362653 24 Apr 10:48 compact_monitor_2_1777016925353.mp4
-rw-r--r-- 1 lukas staff 361959 24 Apr 10:53 compact_monitor_2_1777017231517.mp4
-rw-r--r-- 1 lukas staff 357370 24 Apr 10:58 compact_monitor_2_1777017537009.mp4
-rw-r--r-- 1 lukas staff 356953 24 Apr 11:04 compact_monitor_2_1777017849485.mp4
-rw-r--r-- 1 lukas staff 358343 24 Apr 11:09 compact_monitor_2_1777018161860.mp4
-rw-r--r-- 1 lukas staff 359316 24 Apr 11:14 compact_monitor_2_1777018476291.mp4
-rw-r--r-- 1 lukas staff 360288 24 Apr 11:19 compact_monitor_2_1777018789196.mp4
-rw-r--r-- 1 lukas staff 360706 24 Apr 11:25 compact_monitor_2_1777019101918.mp4
-rw-r--r-- 1 lukas staff 360985 24 Apr 11:30 compact_monitor_2_1777019416527.mp4
-rw-r--r-- 1 lukas staff 358343 24 Apr 11:35 compact_monitor_2_1777019728049.mp4
-rw-r--r-- 1 lukas staff 360150 24 Apr 11:40 compact_monitor_2_1777020031755.mp4
-rw-r--r-- 1 lukas staff 357648 24 Apr 11:45 compact_monitor_2_1777020337619.mp4
-rw-r--r-- 1 lukas staff 356675 24 Apr 11:50 compact_monitor_2_1777020647019.mp4
-rw-r--r-- 1 lukas staff 356536 24 Apr 11:56 compact_monitor_2_1777020959086.mp4
-rw-r--r-- 1 lukas staff 361124 24 Apr 12:01 compact_monitor_2_1777021271140.mp4
-rw-r--r-- 1 lukas staff 364183 24 Apr 12:06 compact_monitor_2_1777021585399.mp4
-rw-r--r-- 1 lukas staff 363209 24 Apr 12:11 compact_monitor_2_1777021900365.mp4
-rw-r--r-- 1 lukas staff 360984 24 Apr 12:16 compact_monitor_2_1777022208304.mp4
-rw-r--r-- 1 lukas staff 359177 24 Apr 12:21 compact_monitor_2_1777022517344.mp4
-rw-r--r-- 1 lukas staff 356675 24 Apr 12:27 compact_monitor_2_1777022828725.mp4
-rw-r--r-- 1 lukas staff 358899 24 Apr 12:32 compact_monitor_2_1777023132111.mp4
-rw-r--r-- 1 lukas staff 357509 24 Apr 12:37 compact_monitor_2_1777023439505.mp4
-rw-r--r-- 1 lukas staff 357092 24 Apr 12:42 compact_monitor_2_1777023742945.mp4
-rw-r--r-- 1 lukas staff 357231 24 Apr 12:47 compact_monitor_2_1777024049070.mp4
-rw-r--r-- 1 lukas staff 357926 24 Apr 12:52 compact_monitor_2_1777024358438.mp4
-rw-r--r-- 1 lukas staff 360984 24 Apr 13:25 compact_monitor_2_1777026337478.mp4
-rw-r--r-- 1 lukas staff 441464 24 Apr 13:36 compact_monitor_2_1777026960622.mp4
-rw-r--r-- 1 lukas staff 3294932 24 Apr 13:41 compact_monitor_2_1777027274051.mp4
-rw-r--r-- 1 lukas staff 3053876 24 Apr 13:46 compact_monitor_2_1777027589141.mp4
-rw-r--r-- 1 lukas staff 1046503 24 Apr 13:51 compact_monitor_2_1777027892570.mp4
-rw-r--r-- 1 lukas staff 1334716 24 Apr 13:56 compact_monitor_2_1777028197180.mp4
-rw-r--r-- 1 lukas staff 209289 24 Apr 14:01 compact_monitor_2_1777028502431.mp4
-rw-r--r-- 1 lukas staff 208498 24 Apr 14:06 compact_monitor_2_1777028813325.mp4
-rw-r--r-- 1 lukas staff 211343 24 Apr 14:12 compact_monitor_2_1777029117809.mp4
-rw-r--r-- 1 lukas staff 208024 24 Apr 14:17 compact_monitor_2_1777029427678.mp4
-rw-r--r-- 1 lukas staff 206286 24 Apr 14:22 compact_monitor_2_1777029734075.mp4
-rw-r--r-- 1 lukas staff 206128 24 Apr 14:27 compact_monitor_2_1777030037028.mp4
-rw-r--r-- 1 lukas staff 206128 24 Apr 14:32 compact_monitor_2_1777030339479.mp4
-rw-r--r-- 1 lukas staff 206128 24 Apr 14:37 compact_monitor_2_1777030648067.mp4
-rw-r--r-- 1 lukas staff 206128 24 Apr 14:42 compact_monitor_2_1777030956817.mp4
-rw-r--r-- 1 lukas staff 206128 24 Apr 14:47 compact_monitor_2_1777031265473.mp4
-rw-r--r-- 1 lukas staff 212291 24 Apr 14:52 compact_monitor_2_1777031576555.mp4
-rw-r--r-- 1 lukas staff 209447 24 Apr 14:58 compact_monitor_2_1777031881300.mp4
-rw-r--r-- 1 lukas staff 206760 24 Apr 15:03 compact_monitor_2_1777032189621.mp4
-rw-r--r-- 1 lukas staff 206444 24 Apr 15:08 compact_monitor_2_1777032495303.mp4
-rw-r--r-- 1 lukas staff 207234 24 Apr 15:13 compact_monitor_2_1777032800114.mp4
-rw-r--r-- 1 lukas staff 207234 24 Apr 15:18 compact_monitor_2_1777033109659.mp4
-rw-r--r-- 1 lukas staff 206128 24 Apr 15:23 compact_monitor_2_1777033412642.mp4
-rw-r--r-- 1 lukas staff 195066 24 Apr 15:28 compact_monitor_2_1777033715187.mp4
-rw-r--r-- 1 lukas staff 1809749 24 Apr 16:29 compact_monitor_2_1777037357085.mp4
-rw-r--r-- 1 lukas staff 782872 24 Apr 16:34 compact_monitor_2_1777037664347.mp4
-rw-r--r-- 1 lukas staff 1653552 24 Apr 16:39 compact_monitor_2_1777037968615.mp4
-rw-r--r-- 1 lukas staff 1760588 24 Apr 16:44 compact_monitor_2_1777038279259.mp4
-rw-r--r-- 1 lukas staff 784478 24 Apr 16:49 compact_monitor_2_1777038590004.mp4
-rw-r--r-- 1 lukas staff 3211116 24 Apr 16:55 compact_monitor_2_1777038904612.mp4
-rw-r--r-- 1 lukas staff 3278730 24 Apr 17:00 compact_monitor_2_1777039224011.mp4
-rw-r--r-- 1 lukas staff 2139446 24 Apr 17:05 compact_monitor_2_1777039540771.mp4
-rw-r--r-- 1 lukas staff 2764581 24 Apr 17:10 compact_monitor_2_1777039847346.mp4
-rw-r--r-- 1 lukas staff 1379171 24 Apr 17:15 compact_monitor_2_1777040155261.mp4
-rw-r--r-- 1 lukas staff 383251 24 Apr 17:20 compact_monitor_2_1777040459175.mp4
-rw-r--r-- 1 lukas staff 1048985 24 Apr 17:26 compact_monitor_2_1777040768479.mp4
-rw-r--r-- 1 lukas staff 327621 24 Apr 17:31 compact_monitor_2_1777041081412.mp4
-rw-r--r-- 1 lukas staff 2348678 24 Apr 17:36 compact_monitor_2_1777041389884.mp4
-rw-r--r-- 1 lukas staff 4241963 24 Apr 17:41 compact_monitor_2_1777041695709.mp4
-rw-r--r-- 1 lukas staff 354123 24 Apr 17:46 compact_monitor_2_1777042003688.mp4
-rw-r--r-- 1 lukas staff 353140 24 Apr 17:51 compact_monitor_2_1777042307243.mp4
-rw-r--r-- 1 lukas staff 1275961 24 Apr 18:42 compact_monitor_2_1777045345607.mp4
-rw-r--r-- 1 lukas staff 887486 24 Apr 18:47 compact_monitor_2_1777045660474.mp4
-rw-r--r-- 1 lukas staff 799440 24 Apr 18:52 compact_monitor_2_1777045977011.mp4
-rw-r--r-- 1 lukas staff 603476 24 Apr 18:58 compact_monitor_2_1777046308287.mp4
-rw-r--r-- 1 lukas staff 440001 24 Apr 19:03 compact_monitor_2_1777046627295.mp4
-rw-r--r-- 1 lukas staff 342701 24 Apr 19:09 compact_monitor_2_1777046945913.mp4
-rw-r--r-- 1 lukas staff 312225 24 Apr 19:14 compact_monitor_2_1777047253317.mp4
-rw-r--r-- 1 lukas staff 961678 24 Apr 19:19 compact_monitor_2_1777047555949.mp4
-rw-r--r-- 1 lukas staff 1078873 24 Apr 19:24 compact_monitor_2_1777047858465.mp4
-rw-r--r-- 1 lukas staff 319480 24 Apr 19:29 compact_monitor_2_1777048160848.mp4
-rw-r--r-- 1 lukas staff 526738 24 Apr 19:34 compact_monitor_2_1777048464036.mp4
-rw-r--r-- 1 lukas staff 1911635 24 Apr 19:39 compact_monitor_2_1777048767906.mp4
-rw-r--r-- 1 lukas staff 1015782 24 Apr 19:44 compact_monitor_2_1777049072014.mp4
-rw-r--r-- 1 lukas staff 640717 24 Apr 19:49 compact_monitor_2_1777049377082.mp4
-rw-r--r-- 1 lukas staff 253614 24 Apr 19:54 compact_monitor_2_1777049680531.mp4
-rw-r--r-- 1 lukas staff 191937 24 Apr 19:59 compact_monitor_2_1777049982986.mp4
-rw-r--r-- 1 lukas staff 318254 24 Apr 20:04 compact_monitor_2_1777050285760.mp4
-rw-r--r-- 1 lukas staff 390253 24 Apr 20:09 compact_monitor_2_1777050587996.mp4
-rw-r--r-- 1 lukas staff 250972 24 Apr 20:14 compact_monitor_2_1777050889831.mp4
-rw-r--r-- 1 lukas staff 458231 24 Apr 20:19 compact_monitor_2_1777051191646.mp4
-rw-r--r-- 1 lukas staff 850547 24 Apr 20:24 compact_monitor_2_1777051494402.mp4
-rw-r--r-- 1 lukas staff 1949530 24 Apr 20:30 compact_monitor_2_1777051799305.mp4
-rw-r--r-- 1 lukas staff 211399 24 Apr 20:35 compact_monitor_2_1777052103733.mp4
-rw-r--r-- 1 lukas staff 773576 24 Apr 20:40 compact_monitor_2_1777052405762.mp4
-rw-r--r-- 1 lukas staff 1104788 24 Apr 20:45 compact_monitor_2_1777052708580.mp4
-rw-r--r-- 1 lukas staff 176893 24 Apr 20:50 compact_monitor_2_1777053012336.mp4
-rw-r--r-- 1 lukas staff 172521 24 Apr 20:55 compact_monitor_2_1777053317285.mp4
-rw-r--r-- 1 lukas staff 200176 24 Apr 21:05 compact_monitor_2_1777053918703.mp4
-rw-r--r-- 1 lukas staff 1230541 24 Apr 21:10 compact_monitor_2_1777054221337.mp4
-rw-r--r-- 1 lukas staff 516796 24 Apr 21:15 compact_monitor_2_1777054524592.mp4
-rw-r--r-- 1 lukas staff 1008198 24 Apr 21:20 compact_monitor_2_1777054828289.mp4
-rw-r--r-- 1 lukas staff 478993 24 Apr 21:25 compact_monitor_2_1777055134659.mp4
-rw-r--r-- 1 lukas staff 279720 24 Apr 21:30 compact_monitor_2_1777055436549.mp4
-rw-r--r-- 1 lukas staff 292358 24 Apr 21:35 compact_monitor_2_1777055738189.mp4
-rw-r--r-- 1 lukas staff 958174 24 Apr 21:40 compact_monitor_2_1777056040201.mp4
-rw-r--r-- 1 lukas staff 178367 24 Apr 21:45 compact_monitor_2_1777056342715.mp4
-rw-r--r-- 1 lukas staff 315157 24 Apr 21:50 compact_monitor_2_1777056644310.mp4
-rw-r--r-- 1 lukas staff 475601 24 Apr 21:55 compact_monitor_2_1777056946056.mp4
-rw-r--r-- 1 lukas staff 1070944 24 Apr 22:00 compact_monitor_2_1777057248209.mp4
-rw-r--r-- 1 lukas staff 162092 24 Apr 22:05 compact_monitor_2_1777057550619.mp4
-rw-r--r-- 1 lukas staff 114909 24 Apr 22:10 compact_monitor_2_1777057853837.mp4
-rw-r--r-- 1 lukas staff 686731 24 Apr 22:20 compact_monitor_2_1777058454984.mp4
-rw-r--r-- 1 lukas staff 246425 24 Apr 22:25 compact_monitor_2_1777058756865.mp4
-rw-r--r-- 1 lukas staff 189964 24 Apr 22:30 compact_monitor_2_1777059058337.mp4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-24 $ d ..
zsh: command not found: d
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-24 $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd 2026-04-25
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-25 $ ll
total 6808
drwxr-xr-x 23 lukas staff 736 25 Apr 17:27 .
drwxr-xr-x 18 lukas staff 576 25 Apr 17:25 ..
-rw-r--r-- 1 lukas staff 105052 25 Apr 17:25 1777127146346_m2.jpg
-rw-r--r-- 1 lukas staff 141502 25 Apr 17:25 1777127155648_m2.jpg
-rw-r--r-- 1 lukas staff 146441 25 Apr 17:25 1777127156460_m2.jpg
-rw-r--r-- 1 lukas staff 146984 25 Apr 17:25 1777127157630_m2.jpg
-rw-r--r-- 1 lukas staff 147965 25 Apr 17:26 1777127161190_m2.jpg
-rw-r--r-- 1 lukas staff 104201 25 Apr 17:26 1777127168009_m2.jpg
-rw-r--r-- 1 lukas staff 140318 25 Apr 17:26 1777127168853_m2.jpg
-rw-r--r-- 1 lukas staff 182933 25 Apr 17:26 1777127169731_m1.jpg
-rw-r--r-- 1 lukas staff 184044 25 Apr 17:26 1777127171385_m1.jpg
-rw-r--r-- 1 lukas staff 65486 25 Apr 17:26 1777127171385_m2.jpg
-rw-r--r-- 1 lukas staff 185749 25 Apr 17:26 1777127176106_m1.jpg
-rw-r--r-- 1 lukas staff 154999 25 Apr 17:26 1777127176816_m1.jpg
-rw-r--r-- 1 lukas staff 103617 25 Apr 17:26 1777127177994_m2.jpg
-rw-r--r-- 1 lukas staff 354841 25 Apr 17:26 1777127183656_m1.jpg
-rw-r--r-- 1 lukas staff 148284 25 Apr 17:26 1777127185903_m1.jpg
-rw-r--r-- 1 lukas staff 196248 25 Apr 17:26 1777127188928_m1.jpg
-rw-r--r-- 1 lukas staff 103136 25 Apr 17:26 1777127200868_m2.jpg
-rw-r--r-- 1 lukas staff 265344 25 Apr 17:26 1777127204173_m1.jpg
-rw-r--r-- 1 lukas staff 220720 25 Apr 17:27 1777127222352_m1.jpg
-rw-r--r-- 1 lukas staff 249706 25 Apr 17:27 1777127225353_m1.jpg
-rw-r--r-- 1 lukas staff 103190 25 Apr 17:27 1777127231085_m2.jpg
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-25 $ ~/.screenpipe/screenpipe_sync.sh 2026-04-24
[2026-04-25 17:27:44] ========================================
[2026-04-25 17:27:44] Screenpipe sync starting for: 2026-04-24
[2026-04-25 17:27:44] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (7.9G)
[2026-04-25 17:27:44] ERROR: NAS not mounted at /Volumes/Test/screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-25 $ ~/.screenpipe/screenpipe_sync.sh 2026-04-24
[2026-04-25 17:28:17] ========================================
[2026-04-25 17:28:17] Screenpipe sync starting for: 2026-04-24
[2026-04-25 17:28:17] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (7.9G)
NAS mount: OK /Volumes/Test/screenpipe
Archive DB: exists (6.0G)
Data dir: OK (250 files, 143M)
UW PICO 5.09 New Buffer
[ Read 352 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
[+00m01s] ▶ Counting source rows for 2026-04-24
frames: 5183
elements: 297071
ui_events: 6116
ocr_text: 1508
meetings: 2
[+00m01s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m00s
creating indexes ✓ 0m01s
creating FTS tables ✓ 0m00s
[+00m02s] ▶ Syncing data for 2026-04-24
video_chunks ✓ 0m08s
frames (5183 rows) ✓ 3m29s
ocr_text (1508 rows) ✓ 0m17s
ui_events (6116 rows) ✓ 0m01s
elements (297071 rows) ✓ 1m18s
meetings (2 rows) ✓ 0m00s
[+05m15s] ▶ Updating FTS indexes
elements_fts ✓ 1m20s
frames_fts ✓ 4m16s
ui_events_fts ✓ 0m03s
[+10m54s] ▶ Verifying DB
frames: 5183 / 5183 ✓
elements: 297071 / 297071 ✓
ui_events: 6116 / 6116 ✓
ocr_text: 1508 / 1508 ✓
meetings: 2 / 2 ✓
[+12m03s] ▶ Copying data folder for 2026-04-24
rsync 2026-04-24/ → NAS ✓ 0m14s (250 files, 143M)
[2026-04-25 17:40:34] Archive DB size: 7.6G
[2026-04-25 17:40:34] Total time: 12m17s
[2026-04-25 17:40:34] Sync complete for 2026-04-24
[2026-04-25 17:40:34] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-25 $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh 2026-04-24
[2026-04-25 18:50:07] ========================================
[2026-04-25 18:50:07] Screenpipe sync starting for: 2026-04-24
[2026-04-25 18:50:07] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (8.0G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (6.0G)
Data dir: OK (250 files, 143M)
[+00m00s] ▶ Counting source rows for 2026-04-24
frames: 5183
elements: 297071
ui_events: 6116
ocr_text: 1508
meetings: 2
[+00m00s] ▶ Initialising tables, indexes, FTS
creating tables ⠋ Runtime error near line 2: unable to open database: /Volumes/screenpipe/archive.db (23)
Parse error near line 3: unknown database nas
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames
error here ---^
Parse error near line 4: unknown database nas
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements
error here ---^
Parse error near line 5: unknown database nas
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events
error here ---^
Parse error near line 6: unknown database nas
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text
error here ---^
Parse error near line 7: unknown database nas
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks
error here ---^
Parse error near line 8: unknown database nas
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings
error here ---^
Runtime error near line 9: no such database: nas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch /Volumes/screenpipe/test.txt && echo "OK" && rm /Volumes/screenpipe/test.txt
touch: /Volumes/screenpipe/test.txt: Operation not permitted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 /Volumes/screenpipe/archive.db ".tables"
Error: unable to open database "/Volumes/screenpipe/archive.db": authorization denied
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch /Volumes/Test/screenpipe/test.txt && echo "OK" && rm /Volumes/Test/screenpipe/test.txt
OK
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ mount | grep -i screenpipe
//Adm1n@DXP4800PLUS-B5F._smb._tcp.local/screenpipe on /Volumes/screenpipe (smbfs, nodev, nosuid, mounted by lukas)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 /Volumes/screenpipe/archive.db ".tables"
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Fri Apr 24 12:59:23 on ttys009\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 ~ $ cd ~/.screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ do -sh ~/.screenpipe \nzsh: parse error near `do'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe \n 13G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data/data\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll\ntotal 40\ndrwxr-xr-x 17 lukas staff 544 24 Apr 09:19 .\ndrwxr-xr-x 167 lukas staff 5344 18 Apr 14:45 ..\n-rw-r--r--@ 1 lukas staff 18436 18 Apr 14:45 .DS_Store\ndrwxr-xr-x 14 lukas staff 448 11 Apr 14:53 2026-04-09\ndrwxr-xr-x 30 lukas staff 960 12 Apr 09:02 2026-04-11\ndrwxr-xr-x 46 lukas staff 1472 13 Apr 15:13 2026-04-12\ndrwxr-xr-x 71 lukas staff 2272 14 Apr 09:24 2026-04-13\ndrwxr-xr-x 247 lukas staff 7904 15 Apr 09:59 2026-04-14\ndrwxr-xr-x 243 lukas staff 7776 16 Apr 09:13 2026-04-15\ndrwxr-xr-x 234 lukas staff 7488 17 Apr 08:57 2026-04-16\ndrwxr-xr-x 229 lukas staff 7328 18 Apr 13:35 2026-04-17\ndrwxr-xr-x 19 lukas staff 608 20 Apr 09:10 2026-04-18\ndrwxr-xr-x 194 lukas staff 6208 21 Apr 09:10 2026-04-20\ndrwxr-xr-x 248 lukas staff 7936 22 Apr 09:16 2026-04-21\ndrwxr-xr-x 224 lukas staff 7168 23 Apr 09:14 2026-04-22\ndrwxr-xr-x 106 lukas staff 3392 24 Apr 09:20 2026-04-23\ndrwxr-xr-x 292 lukas staff 9344 24 Apr 13:54 2026-04-24\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll\ntotal 40\ndrwxr-xr-x 18 lukas staff 576 25 Apr 17:25 .\ndrwxr-xr-x 167 lukas staff 5344 18 Apr 14:45 ..\n-rw-r--r--@ 1 lukas staff 18436 18 Apr 14:45 .DS_Store\ndrwxr-xr-x 14 lukas staff 448 11 Apr 14:53 2026-04-09\ndrwxr-xr-x 30 lukas staff 960 12 Apr 09:02 2026-04-11\ndrwxr-xr-x 46 lukas staff 1472 13 Apr 15:13 2026-04-12\ndrwxr-xr-x 71 lukas staff 2272 14 Apr 09:24 2026-04-13\ndrwxr-xr-x 247 lukas staff 7904 15 Apr 09:59 2026-04-14\ndrwxr-xr-x 243 lukas staff 7776 16 Apr 09:13 2026-04-15\ndrwxr-xr-x 234 lukas staff 7488 17 Apr 08:57 2026-04-16\ndrwxr-xr-x 229 lukas staff 7328 18 Apr 13:35 2026-04-17\ndrwxr-xr-x 19 lukas staff 608 20 Apr 09:10 2026-04-18\ndrwxr-xr-x 194 lukas staff 6208 21 Apr 09:10 2026-04-20\ndrwxr-xr-x 248 lukas staff 7936 22 Apr 09:16 2026-04-21\ndrwxr-xr-x 224 lukas staff 7168 23 Apr 09:14 2026-04-22\ndrwxr-xr-x 106 lukas staff 3392 24 Apr 09:20 2026-04-23\ndrwxr-xr-x 252 lukas staff 8064 24 Apr 22:30 2026-04-24\ndrwxr-xr-x 16 lukas staff 512 25 Apr 17:26 2026-04-25\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd 2026-04-24\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-24 $ ll\ntotal 292176\ndrwxr-xr-x 252 lukas staff 8064 24 Apr 22:30 .\ndrwxr-xr-x 18 lukas staff 576 25 Apr 17:25 ..\n-rw-r--r-- 1 lukas staff 1638831 24 Apr 09:31 compact_monitor_1_1777012261836.mp4\n-rw-r--r-- 1 lukas staff 1391180 24 Apr 09:36 compact_monitor_1_1777012574636.mp4\n-rw-r--r-- 1 lukas staff 2989162 24 Apr 09:41 compact_monitor_1_1777012889540.mp4\n-rw-r--r-- 1 lukas staff 4053896 24 Apr 09:46 compact_monitor_1_1777013205196.mp4\n-rw-r--r-- 1 lukas staff 2108331 24 Apr 09:51 compact_monitor_1_1777013517721.mp4\n-rw-r--r-- 1 lukas staff 3158147 24 Apr 09:57 compact_monitor_1_1777013833236.mp4\n-rw-r--r-- 1 lukas staff 224863 24 Apr 10:02 compact_monitor_1_1777014148462.mp4\n-rw-r--r-- 1 lukas staff 224587 24 Apr 10:07 compact_monitor_1_1777014455847.mp4\n-rw-r--r-- 1 lukas staff 223207 24 Apr 10:12 compact_monitor_1_1777014761287.mp4\n-rw-r--r-- 1 lukas staff 224863 24 Apr 10:17 compact_monitor_1_1777015066130.mp4\n-rw-r--r-- 1 lukas staff 223483 24 Apr 10:22 compact_monitor_1_1777015372226.mp4\n-rw-r--r-- 1 lukas staff 222793 24 Apr 10:28 compact_monitor_1_1777015681605.mp4\n-rw-r--r-- 1 lukas staff 224725 24 Apr 10:33 compact_monitor_1_1777015992029.mp4\n-rw-r--r-- 1 lukas staff 225829 24 Apr 10:38 compact_monitor_1_1777016303248.mp4\n-rw-r--r-- 1 lukas staff 225830 24 Apr 10:43 compact_monitor_1_1777016610979.mp4\n-rw-r--r-- 1 lukas staff 228313 24 Apr 10:48 compact_monitor_1_1777016922353.mp4\n-rw-r--r-- 1 lukas staff 227763 24 Apr 10:53 compact_monitor_1_1777017228818.mp4\n-rw-r--r-- 1 lukas staff 223483 24 Apr 10:58 compact_monitor_1_1777017535961.mp4\n-rw-r--r-- 1 lukas staff 223069 24 Apr 11:04 compact_monitor_1_1777017848118.mp4\n-rw-r--r-- 1 lukas staff 224449 24 Apr 11:09 compact_monitor_1_1777018160122.mp4\n-rw-r--r-- 1 lukas staff 225277 24 Apr 11:14 compact_monitor_1_1777018473585.mp4\n-rw-r--r-- 1 lukas staff 226243 24 Apr 11:19 compact_monitor_1_1777018786981.mp4\n-rw-r--r-- 1 lukas staff 226659 24 Apr 11:25 compact_monitor_1_1777019099556.mp4\n-rw-r--r-- 1 lukas staff 227486 24 Apr 11:30 compact_monitor_1_1777019413061.mp4\n-rw-r--r-- 1 lukas staff 225001 24 Apr 11:35 compact_monitor_1_1777019726395.mp4\n-rw-r--r-- 1 lukas staff 226520 24 Apr 11:40 compact_monitor_1_1777020029531.mp4\n-rw-r--r-- 1 lukas staff 223759 24 Apr 11:45 compact_monitor_1_1777020336492.mp4\n-rw-r--r-- 1 lukas staff 222793 24 Apr 11:50 compact_monitor_1_1777020646184.mp4\n-rw-r--r-- 1 lukas staff 222793 24 Apr 11:55 compact_monitor_1_1777020957673.mp4\n-rw-r--r-- 1 lukas staff 227210 24 Apr 12:01 compact_monitor_1_1777021268422.mp4\n-rw-r--r-- 1 lukas staff 230247 24 Apr 12:06 compact_monitor_1_1777021581300.mp4\n-rw-r--r-- 1 lukas staff 229281 24 Apr 12:11 compact_monitor_1_1777021897044.mp4\n-rw-r--r-- 1 lukas staff 227486 24 Apr 12:16 compact_monitor_1_1777022205733.mp4\n-rw-r--r-- 1 lukas staff 224863 24 Apr 12:21 compact_monitor_1_1777022515833.mp4\n-rw-r--r-- 1 lukas staff 222793 24 Apr 12:27 compact_monitor_1_1777022827784.mp4\n-rw-r--r-- 1 lukas staff 225001 24 Apr 12:32 compact_monitor_1_1777023130468.mp4\n-rw-r--r-- 1 lukas staff 223759 24 Apr 12:37 compact_monitor_1_1777023438384.mp4\n-rw-r--r-- 1 lukas staff 223207 24 Apr 12:42 compact_monitor_1_1777023742059.mp4\n-rw-r--r-- 1 lukas staff 223345 24 Apr 12:47 compact_monitor_1_1777024048142.mp4\n-rw-r--r-- 1 lukas staff 223621 24 Apr 12:52 compact_monitor_1_1777024357357.mp4\n-rw-r--r-- 1 lukas staff 226795 24 Apr 13:25 compact_monitor_1_1777026334121.mp4\n-rw-r--r-- 1 lukas staff 74262 24 Apr 13:36 compact_monitor_1_1777026960071.mp4\n-rw-r--r-- 1 lukas staff 75007 24 Apr 13:41 compact_monitor_1_1777027271559.mp4\n-rw-r--r-- 1 lukas staff 66030 24 Apr 13:46 compact_monitor_1_1777027588021.mp4\n-rw-r--r-- 1 lukas staff 206995 24 Apr 13:51 compact_monitor_1_1777027891692.mp4\n-rw-r--r-- 1 lukas staff 1470509 24 Apr 13:56 compact_monitor_1_1777028193924.mp4\n-rw-r--r-- 1 lukas staff 63562 24 Apr 14:01 compact_monitor_1_1777028500650.mp4\n-rw-r--r-- 1 lukas staff 63177 24 Apr 14:06 compact_monitor_1_1777028811691.mp4\n-rw-r--r-- 1 lukas staff 65865 24 Apr 14:11 compact_monitor_1_1777029114984.mp4\n-rw-r--r-- 1 lukas staff 62921 24 Apr 14:17 compact_monitor_1_1777029426109.mp4\n-rw-r--r-- 1 lukas staff 61129 24 Apr 14:22 compact_monitor_1_1777029733317.mp4\n-rw-r--r-- 1 lukas staff 61001 24 Apr 14:27 compact_monitor_1_1777030036330.mp4\n-rw-r--r-- 1 lukas staff 61001 24 Apr 14:32 compact_monitor_1_1777030338771.mp4\n-rw-r--r-- 1 lukas staff 61001 24 Apr 14:37 compact_monitor_1_1777030647353.mp4\n-rw-r--r-- 1 lukas staff 61001 24 Apr 14:42 compact_monitor_1_1777030956098.mp4\n-rw-r--r-- 1 lukas staff 60873 24 Apr 14:47 compact_monitor_1_1777031264764.mp4\n-rw-r--r-- 1 lukas staff 65995 24 Apr 14:52 compact_monitor_1_1777031573441.mp4\n-rw-r--r-- 1 lukas staff 62793 24 Apr 14:58 compact_monitor_1_1777031879569.mp4\n-rw-r--r-- 1 lukas staff 61513 24 Apr 15:03 compact_monitor_1_1777032188612.mp4\n-rw-r--r-- 1 lukas staff 61129 24 Apr 15:08 compact_monitor_1_1777032494307.mp4\n-rw-r--r-- 1 lukas staff 62025 24 Apr 15:13 compact_monitor_1_1777032798963.mp4\n-rw-r--r-- 1 lukas staff 61897 24 Apr 15:18 compact_monitor_1_1777033108532.mp4\n-rw-r--r-- 1 lukas staff 61001 24 Apr 15:23 compact_monitor_1_1777033411928.mp4\n-rw-r--r-- 1 lukas staff 57493 24 Apr 15:28 compact_monitor_1_1777033714810.mp4\n-rw-r--r-- 1 lukas staff 372372 24 Apr 16:29 compact_monitor_1_1777037355438.mp4\n-rw-r--r-- 1 lukas staff 411247 24 Apr 16:34 compact_monitor_1_1777037663371.mp4\n-rw-r--r-- 1 lukas staff 616103 24 Apr 16:39 compact_monitor_1_1777037967552.mp4\n-rw-r--r-- 1 lukas staff 338030 24 Apr 16:44 compact_monitor_1_1777038278174.mp4\n-rw-r--r-- 1 lukas staff 336601 24 Apr 16:49 compact_monitor_1_1777038589136.mp4\n-rw-r--r-- 1 lukas staff 1198645 24 Apr 16:55 compact_monitor_1_1777038901569.mp4\n-rw-r--r-- 1 lukas staff 573966 24 Apr 17:00 compact_monitor_1_1777039221027.mp4\n-rw-r--r-- 1 lukas staff 501809 24 Apr 17:05 compact_monitor_1_1777039538961.mp4\n-rw-r--r-- 1 lukas staff 343102 24 Apr 17:10 compact_monitor_1_1777039845665.mp4\n-rw-r--r-- 1 lukas staff 339201 24 Apr 17:15 compact_monitor_1_1777040154006.mp4\n-rw-r--r-- 1 lukas staff 336696 24 Apr 17:20 compact_monitor_1_1777040458288.mp4\n-rw-r--r-- 1 lukas staff 336768 24 Apr 17:26 compact_monitor_1_1777040767579.mp4\n-rw-r--r-- 1 lukas staff 336733 24 Apr 17:31 compact_monitor_1_1777041080182.mp4\n-rw-r--r-- 1 lukas staff 336774 24 Apr 17:36 compact_monitor_1_1777041388935.mp4\n-rw-r--r-- 1 lukas staff 1041183 24 Apr 17:41 compact_monitor_1_1777041693870.mp4\n-rw-r--r-- 1 lukas staff 209140 24 Apr 17:46 compact_monitor_1_1777042002848.mp4\n-rw-r--r-- 1 lukas staff 208555 24 Apr 17:51 compact_monitor_1_1777042306433.mp4\n-rw-r--r-- 1 lukas staff 353704 24 Apr 18:42 compact_monitor_1_1777045344500.mp4\n-rw-r--r-- 1 lukas staff 209852 24 Apr 18:47 compact_monitor_1_1777045659150.mp4\n-rw-r--r-- 1 lukas staff 761800 24 Apr 18:52 compact_monitor_1_1777045973244.mp4\n-rw-r--r-- 1 lukas staff 511983 24 Apr 18:58 compact_monitor_1_1777046302568.mp4\n-rw-r--r-- 1 lukas staff 376881 24 Apr 19:03 compact_monitor_1_1777046622649.mp4\n-rw-r--r-- 1 lukas staff 2135572 24 Apr 19:09 compact_monitor_1_1777046942527.mp4\n-rw-r--r-- 1 lukas staff 2067005 24 Apr 19:14 compact_monitor_1_1777047252013.mp4\n-rw-r--r-- 1 lukas staff 325852 24 Apr 19:19 compact_monitor_1_1777047554283.mp4\n-rw-r--r-- 1 lukas staff 1326420 24 Apr 19:24 compact_monitor_1_1777047857184.mp4\n-rw-r--r-- 1 lukas staff 281500 24 Apr 19:29 compact_monitor_1_1777048160060.mp4\n-rw-r--r-- 1 lukas staff 375074 24 Apr 19:34 compact_monitor_1_1777048463034.mp4\n-rw-r--r-- 1 lukas staff 443180 24 Apr 19:39 compact_monitor_1_1777048765957.mp4\n-rw-r--r-- 1 lukas staff 284143 24 Apr 19:44 compact_monitor_1_1777049071027.mp4\n-rw-r--r-- 1 lukas staff 370030 24 Apr 19:49 compact_monitor_1_1777049375483.mp4\n-rw-r--r-- 1 lukas staff 282964 24 Apr 19:54 compact_monitor_1_1777049679741.mp4\n-rw-r--r-- 1 lukas staff 284261 24 Apr 19:59 compact_monitor_1_1777049981944.mp4\n-rw-r--r-- 1 lukas staff 283679 24 Apr 20:04 compact_monitor_1_1777050284761.mp4\n-rw-r--r-- 1 lukas staff 459716 24 Apr 20:09 compact_monitor_1_1777050586972.mp4\n-rw-r--r-- 1 lukas staff 282329 24 Apr 20:14 compact_monitor_1_1777050889084.mp4\n-rw-r--r-- 1 lukas staff 284125 24 Apr 20:19 compact_monitor_1_1777051190676.mp4\n-rw-r--r-- 1 lukas staff 285974 24 Apr 20:24 compact_monitor_1_1777051493257.mp4\n-rw-r--r-- 1 lukas staff 388518 24 Apr 20:29 compact_monitor_1_1777051796486.mp4\n-rw-r--r-- 1 lukas staff 281872 24 Apr 20:35 compact_monitor_1_1777052102980.mp4\n-rw-r--r-- 1 lukas staff 378553 24 Apr 20:40 compact_monitor_1_1777052404622.mp4\n-rw-r--r-- 1 lukas staff 286022 24 Apr 20:45 compact_monitor_1_1777052707340.mp4\n-rw-r--r-- 1 lukas staff 281962 24 Apr 20:50 compact_monitor_1_1777053011638.mp4\n-rw-r--r-- 1 lukas staff 266081 24 Apr 20:55 compact_monitor_1_1777053316848.mp4\n-rw-r--r-- 1 lukas staff 280935 24 Apr 21:05 compact_monitor_1_1777053917985.mp4\n-rw-r--r-- 1 lukas staff 382542 24 Apr 21:10 compact_monitor_1_1777054219554.mp4\n-rw-r--r-- 1 lukas staff 284199 24 Apr 21:15 compact_monitor_1_1777054523505.mp4\n-rw-r--r-- 1 lukas staff 283100 24 Apr 21:20 compact_monitor_1_1777054827421.mp4\n-rw-r--r-- 1 lukas staff 281910 24 Apr 21:25 compact_monitor_1_1777055133913.mp4\n-rw-r--r-- 1 lukas staff 282076 24 Apr 21:30 compact_monitor_1_1777055435796.mp4\n-rw-r--r-- 1 lukas staff 281620 24 Apr 21:35 compact_monitor_1_1777055737420.mp4\n-rw-r--r-- 1 lukas staff 379003 24 Apr 21:40 compact_monitor_1_1777056039080.mp4\n-rw-r--r-- 1 lukas staff 281563 24 Apr 21:45 compact_monitor_1_1777056341894.mp4\n-rw-r--r-- 1 lukas staff 282224 24 Apr 21:50 compact_monitor_1_1777056643558.mp4\n-rw-r--r-- 1 lukas staff 283065 24 Apr 21:55 compact_monitor_1_1777056945182.mp4\n-rw-r--r-- 1 lukas staff 282611 24 Apr 22:00 compact_monitor_1_1777057247444.mp4\n-rw-r--r-- 1 lukas staff 281790 24 Apr 22:05 compact_monitor_1_1777057549868.mp4\n-rw-r--r-- 1 lukas staff 254088 24 Apr 22:10 compact_monitor_1_1777057853482.mp4\n-rw-r--r-- 1 lukas staff 283072 24 Apr 22:20 compact_monitor_1_1777058454256.mp4\n-rw-r--r-- 1 lukas staff 281845 24 Apr 22:25 compact_monitor_1_1777058756125.mp4\n-rw-r--r-- 1 lukas staff 280140 24 Apr 22:30 compact_monitor_1_1777059057712.mp4\n-rw-r--r-- 1 lukas staff 607703 24 Apr 09:31 compact_monitor_2_1777012263153.mp4\n-rw-r--r-- 1 lukas staff 2606372 24 Apr 09:36 compact_monitor_2_1777012577621.mp4\n-rw-r--r-- 1 lukas staff 2186625 24 Apr 09:41 compact_monitor_2_1777012892871.mp4\n-rw-r--r-- 1 lukas staff 2139431 24 Apr 09:46 compact_monitor_2_1777013207979.mp4\n-rw-r--r-- 1 lukas staff 3770878 24 Apr 09:52 compact_monitor_2_1777013519888.mp4\n-rw-r--r-- 1 lukas staff 4167633 24 Apr 09:57 compact_monitor_2_1777013838804.mp4\n-rw-r--r-- 1 lukas staff 359177 24 Apr 10:02 compact_monitor_2_1777014150124.mp4\n-rw-r--r-- 1 lukas staff 358343 24 Apr 10:07 compact_monitor_2_1777014457309.mp4\n-rw-r--r-- 1 lukas staff 356953 24 Apr 10:12 compact_monitor_2_1777014762166.mp4\n-rw-r--r-- 1 lukas staff 358899 24 Apr 10:17 compact_monitor_2_1777015067707.mp4\n-rw-r--r-- 1 lukas staff 357509 24 Apr 10:22 compact_monitor_2_1777015373242.mp4\n-rw-r--r-- 1 lukas staff 356675 24 Apr 10:28 compact_monitor_2_1777015682416.mp4\n-rw-r--r-- 1 lukas staff 358899 24 Apr 10:33 compact_monitor_2_1777015994313.mp4\n-rw-r--r-- 1 lukas staff 359177 24 Apr 10:38 compact_monitor_2_1777016305302.mp4\n-rw-r--r-- 1 lukas staff 360151 24 Apr 10:43 compact_monitor_2_1777016613033.mp4\n-rw-r--r-- 1 lukas staff 362653 24 Apr 10:48 compact_monitor_2_1777016925353.mp4\n-rw-r--r-- 1 lukas staff 361959 24 Apr 10:53 compact_monitor_2_1777017231517.mp4\n-rw-r--r-- 1 lukas staff 357370 24 Apr 10:58 compact_monitor_2_1777017537009.mp4\n-rw-r--r-- 1 lukas staff 356953 24 Apr 11:04 compact_monitor_2_1777017849485.mp4\n-rw-r--r-- 1 lukas staff 358343 24 Apr 11:09 compact_monitor_2_1777018161860.mp4\n-rw-r--r-- 1 lukas staff 359316 24 Apr 11:14 compact_monitor_2_1777018476291.mp4\n-rw-r--r-- 1 lukas staff 360288 24 Apr 11:19 compact_monitor_2_1777018789196.mp4\n-rw-r--r-- 1 lukas staff 360706 24 Apr 11:25 compact_monitor_2_1777019101918.mp4\n-rw-r--r-- 1 lukas staff 360985 24 Apr 11:30 compact_monitor_2_1777019416527.mp4\n-rw-r--r-- 1 lukas staff 358343 24 Apr 11:35 compact_monitor_2_1777019728049.mp4\n-rw-r--r-- 1 lukas staff 360150 24 Apr 11:40 compact_monitor_2_1777020031755.mp4\n-rw-r--r-- 1 lukas staff 357648 24 Apr 11:45 compact_monitor_2_1777020337619.mp4\n-rw-r--r-- 1 lukas staff 356675 24 Apr 11:50 compact_monitor_2_1777020647019.mp4\n-rw-r--r-- 1 lukas staff 356536 24 Apr 11:56 compact_monitor_2_1777020959086.mp4\n-rw-r--r-- 1 lukas staff 361124 24 Apr 12:01 compact_monitor_2_1777021271140.mp4\n-rw-r--r-- 1 lukas staff 364183 24 Apr 12:06 compact_monitor_2_1777021585399.mp4\n-rw-r--r-- 1 lukas staff 363209 24 Apr 12:11 compact_monitor_2_1777021900365.mp4\n-rw-r--r-- 1 lukas staff 360984 24 Apr 12:16 compact_monitor_2_1777022208304.mp4\n-rw-r--r-- 1 lukas staff 359177 24 Apr 12:21 compact_monitor_2_1777022517344.mp4\n-rw-r--r-- 1 lukas staff 356675 24 Apr 12:27 compact_monitor_2_1777022828725.mp4\n-rw-r--r-- 1 lukas staff 358899 24 Apr 12:32 compact_monitor_2_1777023132111.mp4\n-rw-r--r-- 1 lukas staff 357509 24 Apr 12:37 compact_monitor_2_1777023439505.mp4\n-rw-r--r-- 1 lukas staff 357092 24 Apr 12:42 compact_monitor_2_1777023742945.mp4\n-rw-r--r-- 1 lukas staff 357231 24 Apr 12:47 compact_monitor_2_1777024049070.mp4\n-rw-r--r-- 1 lukas staff 357926 24 Apr 12:52 compact_monitor_2_1777024358438.mp4\n-rw-r--r-- 1 lukas staff 360984 24 Apr 13:25 compact_monitor_2_1777026337478.mp4\n-rw-r--r-- 1 lukas staff 441464 24 Apr 13:36 compact_monitor_2_1777026960622.mp4\n-rw-r--r-- 1 lukas staff 3294932 24 Apr 13:41 compact_monitor_2_1777027274051.mp4\n-rw-r--r-- 1 lukas staff 3053876 24 Apr 13:46 compact_monitor_2_1777027589141.mp4\n-rw-r--r-- 1 lukas staff 1046503 24 Apr 13:51 compact_monitor_2_1777027892570.mp4\n-rw-r--r-- 1 lukas staff 1334716 24 Apr 13:56 compact_monitor_2_1777028197180.mp4\n-rw-r--r-- 1 lukas staff 209289 24 Apr 14:01 compact_monitor_2_1777028502431.mp4\n-rw-r--r-- 1 lukas staff 208498 24 Apr 14:06 compact_monitor_2_1777028813325.mp4\n-rw-r--r-- 1 lukas staff 211343 24 Apr 14:12 compact_monitor_2_1777029117809.mp4\n-rw-r--r-- 1 lukas staff 208024 24 Apr 14:17 compact_monitor_2_1777029427678.mp4\n-rw-r--r-- 1 lukas staff 206286 24 Apr 14:22 compact_monitor_2_1777029734075.mp4\n-rw-r--r-- 1 lukas staff 206128 24 Apr 14:27 compact_monitor_2_1777030037028.mp4\n-rw-r--r-- 1 lukas staff 206128 24 Apr 14:32 compact_monitor_2_1777030339479.mp4\n-rw-r--r-- 1 lukas staff 206128 24 Apr 14:37 compact_monitor_2_1777030648067.mp4\n-rw-r--r-- 1 lukas staff 206128 24 Apr 14:42 compact_monitor_2_1777030956817.mp4\n-rw-r--r-- 1 lukas staff 206128 24 Apr 14:47 compact_monitor_2_1777031265473.mp4\n-rw-r--r-- 1 lukas staff 212291 24 Apr 14:52 compact_monitor_2_1777031576555.mp4\n-rw-r--r-- 1 lukas staff 209447 24 Apr 14:58 compact_monitor_2_1777031881300.mp4\n-rw-r--r-- 1 lukas staff 206760 24 Apr 15:03 compact_monitor_2_1777032189621.mp4\n-rw-r--r-- 1 lukas staff 206444 24 Apr 15:08 compact_monitor_2_1777032495303.mp4\n-rw-r--r-- 1 lukas staff 207234 24 Apr 15:13 compact_monitor_2_1777032800114.mp4\n-rw-r--r-- 1 lukas staff 207234 24 Apr 15:18 compact_monitor_2_1777033109659.mp4\n-rw-r--r-- 1 lukas staff 206128 24 Apr 15:23 compact_monitor_2_1777033412642.mp4\n-rw-r--r-- 1 lukas staff 195066 24 Apr 15:28 compact_monitor_2_1777033715187.mp4\n-rw-r--r-- 1 lukas staff 1809749 24 Apr 16:29 compact_monitor_2_1777037357085.mp4\n-rw-r--r-- 1 lukas staff 782872 24 Apr 16:34 compact_monitor_2_1777037664347.mp4\n-rw-r--r-- 1 lukas staff 1653552 24 Apr 16:39 compact_monitor_2_1777037968615.mp4\n-rw-r--r-- 1 lukas staff 1760588 24 Apr 16:44 compact_monitor_2_1777038279259.mp4\n-rw-r--r-- 1 lukas staff 784478 24 Apr 16:49 compact_monitor_2_1777038590004.mp4\n-rw-r--r-- 1 lukas staff 3211116 24 Apr 16:55 compact_monitor_2_1777038904612.mp4\n-rw-r--r-- 1 lukas staff 3278730 24 Apr 17:00 compact_monitor_2_1777039224011.mp4\n-rw-r--r-- 1 lukas staff 2139446 24 Apr 17:05 compact_monitor_2_1777039540771.mp4\n-rw-r--r-- 1 lukas staff 2764581 24 Apr 17:10 compact_monitor_2_1777039847346.mp4\n-rw-r--r-- 1 lukas staff 1379171 24 Apr 17:15 compact_monitor_2_1777040155261.mp4\n-rw-r--r-- 1 lukas staff 383251 24 Apr 17:20 compact_monitor_2_1777040459175.mp4\n-rw-r--r-- 1 lukas staff 1048985 24 Apr 17:26 compact_monitor_2_1777040768479.mp4\n-rw-r--r-- 1 lukas staff 327621 24 Apr 17:31 compact_monitor_2_1777041081412.mp4\n-rw-r--r-- 1 lukas staff 2348678 24 Apr 17:36 compact_monitor_2_1777041389884.mp4\n-rw-r--r-- 1 lukas staff 4241963 24 Apr 17:41 compact_monitor_2_1777041695709.mp4\n-rw-r--r-- 1 lukas staff 354123 24 Apr 17:46 compact_monitor_2_1777042003688.mp4\n-rw-r--r-- 1 lukas staff 353140 24 Apr 17:51 compact_monitor_2_1777042307243.mp4\n-rw-r--r-- 1 lukas staff 1275961 24 Apr 18:42 compact_monitor_2_1777045345607.mp4\n-rw-r--r-- 1 lukas staff 887486 24 Apr 18:47 compact_monitor_2_1777045660474.mp4\n-rw-r--r-- 1 lukas staff 799440 24 Apr 18:52 compact_monitor_2_1777045977011.mp4\n-rw-r--r-- 1 lukas staff 603476 24 Apr 18:58 compact_monitor_2_1777046308287.mp4\n-rw-r--r-- 1 lukas staff 440001 24 Apr 19:03 compact_monitor_2_1777046627295.mp4\n-rw-r--r-- 1 lukas staff 342701 24 Apr 19:09 compact_monitor_2_1777046945913.mp4\n-rw-r--r-- 1 lukas staff 312225 24 Apr 19:14 compact_monitor_2_1777047253317.mp4\n-rw-r--r-- 1 lukas staff 961678 24 Apr 19:19 compact_monitor_2_1777047555949.mp4\n-rw-r--r-- 1 lukas staff 1078873 24 Apr 19:24 compact_monitor_2_1777047858465.mp4\n-rw-r--r-- 1 lukas staff 319480 24 Apr 19:29 compact_monitor_2_1777048160848.mp4\n-rw-r--r-- 1 lukas staff 526738 24 Apr 19:34 compact_monitor_2_1777048464036.mp4\n-rw-r--r-- 1 lukas staff 1911635 24 Apr 19:39 compact_monitor_2_1777048767906.mp4\n-rw-r--r-- 1 lukas staff 1015782 24 Apr 19:44 compact_monitor_2_1777049072014.mp4\n-rw-r--r-- 1 lukas staff 640717 24 Apr 19:49 compact_monitor_2_1777049377082.mp4\n-rw-r--r-- 1 lukas staff 253614 24 Apr 19:54 compact_monitor_2_1777049680531.mp4\n-rw-r--r-- 1 lukas staff 191937 24 Apr 19:59 compact_monitor_2_1777049982986.mp4\n-rw-r--r-- 1 lukas staff 318254 24 Apr 20:04 compact_monitor_2_1777050285760.mp4\n-rw-r--r-- 1 lukas staff 390253 24 Apr 20:09 compact_monitor_2_1777050587996.mp4\n-rw-r--r-- 1 lukas staff 250972 24 Apr 20:14 compact_monitor_2_1777050889831.mp4\n-rw-r--r-- 1 lukas staff 458231 24 Apr 20:19 compact_monitor_2_1777051191646.mp4\n-rw-r--r-- 1 lukas staff 850547 24 Apr 20:24 compact_monitor_2_1777051494402.mp4\n-rw-r--r-- 1 lukas staff 1949530 24 Apr 20:30 compact_monitor_2_1777051799305.mp4\n-rw-r--r-- 1 lukas staff 211399 24 Apr 20:35 compact_monitor_2_1777052103733.mp4\n-rw-r--r-- 1 lukas staff 773576 24 Apr 20:40 compact_monitor_2_1777052405762.mp4\n-rw-r--r-- 1 lukas staff 1104788 24 Apr 20:45 compact_monitor_2_1777052708580.mp4\n-rw-r--r-- 1 lukas staff 176893 24 Apr 20:50 compact_monitor_2_1777053012336.mp4\n-rw-r--r-- 1 lukas staff 172521 24 Apr 20:55 compact_monitor_2_1777053317285.mp4\n-rw-r--r-- 1 lukas staff 200176 24 Apr 21:05 compact_monitor_2_1777053918703.mp4\n-rw-r--r-- 1 lukas staff 1230541 24 Apr 21:10 compact_monitor_2_1777054221337.mp4\n-rw-r--r-- 1 lukas staff 516796 24 Apr 21:15 compact_monitor_2_1777054524592.mp4\n-rw-r--r-- 1 lukas staff 1008198 24 Apr 21:20 compact_monitor_2_1777054828289.mp4\n-rw-r--r-- 1 lukas staff 478993 24 Apr 21:25 compact_monitor_2_1777055134659.mp4\n-rw-r--r-- 1 lukas staff 279720 24 Apr 21:30 compact_monitor_2_1777055436549.mp4\n-rw-r--r-- 1 lukas staff 292358 24 Apr 21:35 compact_monitor_2_1777055738189.mp4\n-rw-r--r-- 1 lukas staff 958174 24 Apr 21:40 compact_monitor_2_1777056040201.mp4\n-rw-r--r-- 1 lukas staff 178367 24 Apr 21:45 compact_monitor_2_1777056342715.mp4\n-rw-r--r-- 1 lukas staff 315157 24 Apr 21:50 compact_monitor_2_1777056644310.mp4\n-rw-r--r-- 1 lukas staff 475601 24 Apr 21:55 compact_monitor_2_1777056946056.mp4\n-rw-r--r-- 1 lukas staff 1070944 24 Apr 22:00 compact_monitor_2_1777057248209.mp4\n-rw-r--r-- 1 lukas staff 162092 24 Apr 22:05 compact_monitor_2_1777057550619.mp4\n-rw-r--r-- 1 lukas staff 114909 24 Apr 22:10 compact_monitor_2_1777057853837.mp4\n-rw-r--r-- 1 lukas staff 686731 24 Apr 22:20 compact_monitor_2_1777058454984.mp4\n-rw-r--r-- 1 lukas staff 246425 24 Apr 22:25 compact_monitor_2_1777058756865.mp4\n-rw-r--r-- 1 lukas staff 189964 24 Apr 22:30 compact_monitor_2_1777059058337.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-24 $ d ..\nzsh: command not found: d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-24 $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd 2026-04-25\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-25 $ ll\ntotal 6808\ndrwxr-xr-x 23 lukas staff 736 25 Apr 17:27 .\ndrwxr-xr-x 18 lukas staff 576 25 Apr 17:25 ..\n-rw-r--r-- 1 lukas staff 105052 25 Apr 17:25 1777127146346_m2.jpg\n-rw-r--r-- 1 lukas staff 141502 25 Apr 17:25 1777127155648_m2.jpg\n-rw-r--r-- 1 lukas staff 146441 25 Apr 17:25 1777127156460_m2.jpg\n-rw-r--r-- 1 lukas staff 146984 25 Apr 17:25 1777127157630_m2.jpg\n-rw-r--r-- 1 lukas staff 147965 25 Apr 17:26 1777127161190_m2.jpg\n-rw-r--r-- 1 lukas staff 104201 25 Apr 17:26 1777127168009_m2.jpg\n-rw-r--r-- 1 lukas staff 140318 25 Apr 17:26 1777127168853_m2.jpg\n-rw-r--r-- 1 lukas staff 182933 25 Apr 17:26 1777127169731_m1.jpg\n-rw-r--r-- 1 lukas staff 184044 25 Apr 17:26 1777127171385_m1.jpg\n-rw-r--r-- 1 lukas staff 65486 25 Apr 17:26 1777127171385_m2.jpg\n-rw-r--r-- 1 lukas staff 185749 25 Apr 17:26 1777127176106_m1.jpg\n-rw-r--r-- 1 lukas staff 154999 25 Apr 17:26 1777127176816_m1.jpg\n-rw-r--r-- 1 lukas staff 103617 25 Apr 17:26 1777127177994_m2.jpg\n-rw-r--r-- 1 lukas staff 354841 25 Apr 17:26 1777127183656_m1.jpg\n-rw-r--r-- 1 lukas staff 148284 25 Apr 17:26 1777127185903_m1.jpg\n-rw-r--r-- 1 lukas staff 196248 25 Apr 17:26 1777127188928_m1.jpg\n-rw-r--r-- 1 lukas staff 103136 25 Apr 17:26 1777127200868_m2.jpg\n-rw-r--r-- 1 lukas staff 265344 25 Apr 17:26 1777127204173_m1.jpg\n-rw-r--r-- 1 lukas staff 220720 25 Apr 17:27 1777127222352_m1.jpg\n-rw-r--r-- 1 lukas staff 249706 25 Apr 17:27 1777127225353_m1.jpg\n-rw-r--r-- 1 lukas staff 103190 25 Apr 17:27 1777127231085_m2.jpg\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-25 $ ~/.screenpipe/screenpipe_sync.sh 2026-04-24\n[2026-04-25 17:27:44] ========================================\n[2026-04-25 17:27:44] Screenpipe sync starting for: 2026-04-24\n[2026-04-25 17:27:44] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (7.9G)\n[2026-04-25 17:27:44] ERROR: NAS not mounted at /Volumes/Test/screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-25 $ ~/.screenpipe/screenpipe_sync.sh 2026-04-24\n[2026-04-25 17:28:17] ========================================\n[2026-04-25 17:28:17] Screenpipe sync starting for: 2026-04-24\n[2026-04-25 17:28:17] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (7.9G)\n NAS mount: OK /Volumes/Test/screenpipe\n Archive DB: exists (6.0G)\n Data dir: OK (250 files, 143M)\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 352 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n\n[+00m01s] ▶ Counting source rows for 2026-04-24\n frames: 5183\n elements: 297071\n ui_events: 6116\n ocr_text: 1508\n meetings: 2\n\n[+00m01s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m00s\n creating indexes ✓ 0m01s\n creating FTS tables ✓ 0m00s\n\n[+00m02s] ▶ Syncing data for 2026-04-24\n video_chunks ✓ 0m08s\n frames (5183 rows) ✓ 3m29s\u0000\t\n ocr_text (1508 rows) ✓ 0m17s\n ui_events (6116 rows) ✓ 0m01s\n elements (297071 rows) ✓ 1m18s\n meetings (2 rows) ✓ 0m00s\n\n[+05m15s] ▶ Updating FTS indexes\n elements_fts ✓ 1m20s\n frames_fts ✓ 4m16s\n ui_events_fts ✓ 0m03s\n\n[+10m54s] ▶ Verifying DB\n frames: 5183 / 5183 ✓\n elements: 297071 / 297071 ✓\n ui_events: 6116 / 6116 ✓\n ocr_text: 1508 / 1508 ✓\n meetings: 2 / 2 ✓\n\n[+12m03s] ▶ Copying data folder for 2026-04-24\n rsync 2026-04-24/ → NAS ✓ 0m14s (250 files, 143M)\n\n[2026-04-25 17:40:34] Archive DB size: 7.6G\n[2026-04-25 17:40:34] Total time: 12m17s\n[2026-04-25 17:40:34] Sync complete for 2026-04-24\n[2026-04-25 17:40:34] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-25 $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh 2026-04-24\n[2026-04-25 18:50:07] ========================================\n[2026-04-25 18:50:07] Screenpipe sync starting for: 2026-04-24\n[2026-04-25 18:50:07] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (8.0G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (6.0G)\n Data dir: OK (250 files, 143M)\n\n[+00m00s] ▶ Counting source rows for 2026-04-24\n frames: 5183\n elements: 297071\n ui_events: 6116\n ocr_text: 1508\n meetings: 2\n\n[+00m00s] ▶ Initialising tables, indexes, FTS\n creating tables ⠋ Runtime error near line 2: unable to open database: /Volumes/screenpipe/archive.db (23)\nParse error near line 3: unknown database nas\n CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames \n error here ---^\nParse error near line 4: unknown database nas\n CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements \n error here ---^\nParse error near line 5: unknown database nas\n CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events \n error here ---^\nParse error near line 6: unknown database nas\n CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text \n error here ---^\nParse error near line 7: unknown database nas\n CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks\n error here ---^\nParse error near line 8: unknown database nas\n CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings \n error here ---^\nRuntime error near line 9: no such database: nas\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch /Volumes/screenpipe/test.txt && echo \"OK\" && rm /Volumes/screenpipe/test.txt\ntouch: /Volumes/screenpipe/test.txt: Operation not permitted\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 /Volumes/screenpipe/archive.db \".tables\"\nError: unable to open database \"/Volumes/screenpipe/archive.db\": authorization denied\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch /Volumes/Test/screenpipe/test.txt && echo \"OK\" && rm /Volumes/Test/screenpipe/test.txt\nOK\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ mount | grep -i screenpipe\n//Adm1n@DXP4800PLUS-B5F._smb._tcp.local/screenpipe on /Volumes/screenpipe (smbfs, nodev, nosuid, mounted by lukas)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 /Volumes/screenpipe/archive.db \".tables\"","depth":4,"value":"Last login: Fri Apr 24 12:59:23 on ttys009\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 ~ $ cd ~/.screenpipe \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ do -sh ~/.screenpipe \nzsh: parse error near `do'\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe \n 13G\u0000\u0000\u0000\t/Users/lukas/.screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data/data\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll\ntotal 40\ndrwxr-xr-x 17 lukas staff 544 24 Apr 09:19 .\ndrwxr-xr-x 167 lukas staff 5344 18 Apr 14:45 ..\n-rw-r--r--@ 1 lukas staff 18436 18 Apr 14:45 .DS_Store\ndrwxr-xr-x 14 lukas staff 448 11 Apr 14:53 2026-04-09\ndrwxr-xr-x 30 lukas staff 960 12 Apr 09:02 2026-04-11\ndrwxr-xr-x 46 lukas staff 1472 13 Apr 15:13 2026-04-12\ndrwxr-xr-x 71 lukas staff 2272 14 Apr 09:24 2026-04-13\ndrwxr-xr-x 247 lukas staff 7904 15 Apr 09:59 2026-04-14\ndrwxr-xr-x 243 lukas staff 7776 16 Apr 09:13 2026-04-15\ndrwxr-xr-x 234 lukas staff 7488 17 Apr 08:57 2026-04-16\ndrwxr-xr-x 229 lukas staff 7328 18 Apr 13:35 2026-04-17\ndrwxr-xr-x 19 lukas staff 608 20 Apr 09:10 2026-04-18\ndrwxr-xr-x 194 lukas staff 6208 21 Apr 09:10 2026-04-20\ndrwxr-xr-x 248 lukas staff 7936 22 Apr 09:16 2026-04-21\ndrwxr-xr-x 224 lukas staff 7168 23 Apr 09:14 2026-04-22\ndrwxr-xr-x 106 lukas staff 3392 24 Apr 09:20 2026-04-23\ndrwxr-xr-x 292 lukas staff 9344 24 Apr 13:54 2026-04-24\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll\ntotal 40\ndrwxr-xr-x 18 lukas staff 576 25 Apr 17:25 .\ndrwxr-xr-x 167 lukas staff 5344 18 Apr 14:45 ..\n-rw-r--r--@ 1 lukas staff 18436 18 Apr 14:45 .DS_Store\ndrwxr-xr-x 14 lukas staff 448 11 Apr 14:53 2026-04-09\ndrwxr-xr-x 30 lukas staff 960 12 Apr 09:02 2026-04-11\ndrwxr-xr-x 46 lukas staff 1472 13 Apr 15:13 2026-04-12\ndrwxr-xr-x 71 lukas staff 2272 14 Apr 09:24 2026-04-13\ndrwxr-xr-x 247 lukas staff 7904 15 Apr 09:59 2026-04-14\ndrwxr-xr-x 243 lukas staff 7776 16 Apr 09:13 2026-04-15\ndrwxr-xr-x 234 lukas staff 7488 17 Apr 08:57 2026-04-16\ndrwxr-xr-x 229 lukas staff 7328 18 Apr 13:35 2026-04-17\ndrwxr-xr-x 19 lukas staff 608 20 Apr 09:10 2026-04-18\ndrwxr-xr-x 194 lukas staff 6208 21 Apr 09:10 2026-04-20\ndrwxr-xr-x 248 lukas staff 7936 22 Apr 09:16 2026-04-21\ndrwxr-xr-x 224 lukas staff 7168 23 Apr 09:14 2026-04-22\ndrwxr-xr-x 106 lukas staff 3392 24 Apr 09:20 2026-04-23\ndrwxr-xr-x 252 lukas staff 8064 24 Apr 22:30 2026-04-24\ndrwxr-xr-x 16 lukas staff 512 25 Apr 17:26 2026-04-25\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd 2026-04-24\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-24 $ ll\ntotal 292176\ndrwxr-xr-x 252 lukas staff 8064 24 Apr 22:30 .\ndrwxr-xr-x 18 lukas staff 576 25 Apr 17:25 ..\n-rw-r--r-- 1 lukas staff 1638831 24 Apr 09:31 compact_monitor_1_1777012261836.mp4\n-rw-r--r-- 1 lukas staff 1391180 24 Apr 09:36 compact_monitor_1_1777012574636.mp4\n-rw-r--r-- 1 lukas staff 2989162 24 Apr 09:41 compact_monitor_1_1777012889540.mp4\n-rw-r--r-- 1 lukas staff 4053896 24 Apr 09:46 compact_monitor_1_1777013205196.mp4\n-rw-r--r-- 1 lukas staff 2108331 24 Apr 09:51 compact_monitor_1_1777013517721.mp4\n-rw-r--r-- 1 lukas staff 3158147 24 Apr 09:57 compact_monitor_1_1777013833236.mp4\n-rw-r--r-- 1 lukas staff 224863 24 Apr 10:02 compact_monitor_1_1777014148462.mp4\n-rw-r--r-- 1 lukas staff 224587 24 Apr 10:07 compact_monitor_1_1777014455847.mp4\n-rw-r--r-- 1 lukas staff 223207 24 Apr 10:12 compact_monitor_1_1777014761287.mp4\n-rw-r--r-- 1 lukas staff 224863 24 Apr 10:17 compact_monitor_1_1777015066130.mp4\n-rw-r--r-- 1 lukas staff 223483 24 Apr 10:22 compact_monitor_1_1777015372226.mp4\n-rw-r--r-- 1 lukas staff 222793 24 Apr 10:28 compact_monitor_1_1777015681605.mp4\n-rw-r--r-- 1 lukas staff 224725 24 Apr 10:33 compact_monitor_1_1777015992029.mp4\n-rw-r--r-- 1 lukas staff 225829 24 Apr 10:38 compact_monitor_1_1777016303248.mp4\n-rw-r--r-- 1 lukas staff 225830 24 Apr 10:43 compact_monitor_1_1777016610979.mp4\n-rw-r--r-- 1 lukas staff 228313 24 Apr 10:48 compact_monitor_1_1777016922353.mp4\n-rw-r--r-- 1 lukas staff 227763 24 Apr 10:53 compact_monitor_1_1777017228818.mp4\n-rw-r--r-- 1 lukas staff 223483 24 Apr 10:58 compact_monitor_1_1777017535961.mp4\n-rw-r--r-- 1 lukas staff 223069 24 Apr 11:04 compact_monitor_1_1777017848118.mp4\n-rw-r--r-- 1 lukas staff 224449 24 Apr 11:09 compact_monitor_1_1777018160122.mp4\n-rw-r--r-- 1 lukas staff 225277 24 Apr 11:14 compact_monitor_1_1777018473585.mp4\n-rw-r--r-- 1 lukas staff 226243 24 Apr 11:19 compact_monitor_1_1777018786981.mp4\n-rw-r--r-- 1 lukas staff 226659 24 Apr 11:25 compact_monitor_1_1777019099556.mp4\n-rw-r--r-- 1 lukas staff 227486 24 Apr 11:30 compact_monitor_1_1777019413061.mp4\n-rw-r--r-- 1 lukas staff 225001 24 Apr 11:35 compact_monitor_1_1777019726395.mp4\n-rw-r--r-- 1 lukas staff 226520 24 Apr 11:40 compact_monitor_1_1777020029531.mp4\n-rw-r--r-- 1 lukas staff 223759 24 Apr 11:45 compact_monitor_1_1777020336492.mp4\n-rw-r--r-- 1 lukas staff 222793 24 Apr 11:50 compact_monitor_1_1777020646184.mp4\n-rw-r--r-- 1 lukas staff 222793 24 Apr 11:55 compact_monitor_1_1777020957673.mp4\n-rw-r--r-- 1 lukas staff 227210 24 Apr 12:01 compact_monitor_1_1777021268422.mp4\n-rw-r--r-- 1 lukas staff 230247 24 Apr 12:06 compact_monitor_1_1777021581300.mp4\n-rw-r--r-- 1 lukas staff 229281 24 Apr 12:11 compact_monitor_1_1777021897044.mp4\n-rw-r--r-- 1 lukas staff 227486 24 Apr 12:16 compact_monitor_1_1777022205733.mp4\n-rw-r--r-- 1 lukas staff 224863 24 Apr 12:21 compact_monitor_1_1777022515833.mp4\n-rw-r--r-- 1 lukas staff 222793 24 Apr 12:27 compact_monitor_1_1777022827784.mp4\n-rw-r--r-- 1 lukas staff 225001 24 Apr 12:32 compact_monitor_1_1777023130468.mp4\n-rw-r--r-- 1 lukas staff 223759 24 Apr 12:37 compact_monitor_1_1777023438384.mp4\n-rw-r--r-- 1 lukas staff 223207 24 Apr 12:42 compact_monitor_1_1777023742059.mp4\n-rw-r--r-- 1 lukas staff 223345 24 Apr 12:47 compact_monitor_1_1777024048142.mp4\n-rw-r--r-- 1 lukas staff 223621 24 Apr 12:52 compact_monitor_1_1777024357357.mp4\n-rw-r--r-- 1 lukas staff 226795 24 Apr 13:25 compact_monitor_1_1777026334121.mp4\n-rw-r--r-- 1 lukas staff 74262 24 Apr 13:36 compact_monitor_1_1777026960071.mp4\n-rw-r--r-- 1 lukas staff 75007 24 Apr 13:41 compact_monitor_1_1777027271559.mp4\n-rw-r--r-- 1 lukas staff 66030 24 Apr 13:46 compact_monitor_1_1777027588021.mp4\n-rw-r--r-- 1 lukas staff 206995 24 Apr 13:51 compact_monitor_1_1777027891692.mp4\n-rw-r--r-- 1 lukas staff 1470509 24 Apr 13:56 compact_monitor_1_1777028193924.mp4\n-rw-r--r-- 1 lukas staff 63562 24 Apr 14:01 compact_monitor_1_1777028500650.mp4\n-rw-r--r-- 1 lukas staff 63177 24 Apr 14:06 compact_monitor_1_1777028811691.mp4\n-rw-r--r-- 1 lukas staff 65865 24 Apr 14:11 compact_monitor_1_1777029114984.mp4\n-rw-r--r-- 1 lukas staff 62921 24 Apr 14:17 compact_monitor_1_1777029426109.mp4\n-rw-r--r-- 1 lukas staff 61129 24 Apr 14:22 compact_monitor_1_1777029733317.mp4\n-rw-r--r-- 1 lukas staff 61001 24 Apr 14:27 compact_monitor_1_1777030036330.mp4\n-rw-r--r-- 1 lukas staff 61001 24 Apr 14:32 compact_monitor_1_1777030338771.mp4\n-rw-r--r-- 1 lukas staff 61001 24 Apr 14:37 compact_monitor_1_1777030647353.mp4\n-rw-r--r-- 1 lukas staff 61001 24 Apr 14:42 compact_monitor_1_1777030956098.mp4\n-rw-r--r-- 1 lukas staff 60873 24 Apr 14:47 compact_monitor_1_1777031264764.mp4\n-rw-r--r-- 1 lukas staff 65995 24 Apr 14:52 compact_monitor_1_1777031573441.mp4\n-rw-r--r-- 1 lukas staff 62793 24 Apr 14:58 compact_monitor_1_1777031879569.mp4\n-rw-r--r-- 1 lukas staff 61513 24 Apr 15:03 compact_monitor_1_1777032188612.mp4\n-rw-r--r-- 1 lukas staff 61129 24 Apr 15:08 compact_monitor_1_1777032494307.mp4\n-rw-r--r-- 1 lukas staff 62025 24 Apr 15:13 compact_monitor_1_1777032798963.mp4\n-rw-r--r-- 1 lukas staff 61897 24 Apr 15:18 compact_monitor_1_1777033108532.mp4\n-rw-r--r-- 1 lukas staff 61001 24 Apr 15:23 compact_monitor_1_1777033411928.mp4\n-rw-r--r-- 1 lukas staff 57493 24 Apr 15:28 compact_monitor_1_1777033714810.mp4\n-rw-r--r-- 1 lukas staff 372372 24 Apr 16:29 compact_monitor_1_1777037355438.mp4\n-rw-r--r-- 1 lukas staff 411247 24 Apr 16:34 compact_monitor_1_1777037663371.mp4\n-rw-r--r-- 1 lukas staff 616103 24 Apr 16:39 compact_monitor_1_1777037967552.mp4\n-rw-r--r-- 1 lukas staff 338030 24 Apr 16:44 compact_monitor_1_1777038278174.mp4\n-rw-r--r-- 1 lukas staff 336601 24 Apr 16:49 compact_monitor_1_1777038589136.mp4\n-rw-r--r-- 1 lukas staff 1198645 24 Apr 16:55 compact_monitor_1_1777038901569.mp4\n-rw-r--r-- 1 lukas staff 573966 24 Apr 17:00 compact_monitor_1_1777039221027.mp4\n-rw-r--r-- 1 lukas staff 501809 24 Apr 17:05 compact_monitor_1_1777039538961.mp4\n-rw-r--r-- 1 lukas staff 343102 24 Apr 17:10 compact_monitor_1_1777039845665.mp4\n-rw-r--r-- 1 lukas staff 339201 24 Apr 17:15 compact_monitor_1_1777040154006.mp4\n-rw-r--r-- 1 lukas staff 336696 24 Apr 17:20 compact_monitor_1_1777040458288.mp4\n-rw-r--r-- 1 lukas staff 336768 24 Apr 17:26 compact_monitor_1_1777040767579.mp4\n-rw-r--r-- 1 lukas staff 336733 24 Apr 17:31 compact_monitor_1_1777041080182.mp4\n-rw-r--r-- 1 lukas staff 336774 24 Apr 17:36 compact_monitor_1_1777041388935.mp4\n-rw-r--r-- 1 lukas staff 1041183 24 Apr 17:41 compact_monitor_1_1777041693870.mp4\n-rw-r--r-- 1 lukas staff 209140 24 Apr 17:46 compact_monitor_1_1777042002848.mp4\n-rw-r--r-- 1 lukas staff 208555 24 Apr 17:51 compact_monitor_1_1777042306433.mp4\n-rw-r--r-- 1 lukas staff 353704 24 Apr 18:42 compact_monitor_1_1777045344500.mp4\n-rw-r--r-- 1 lukas staff 209852 24 Apr 18:47 compact_monitor_1_1777045659150.mp4\n-rw-r--r-- 1 lukas staff 761800 24 Apr 18:52 compact_monitor_1_1777045973244.mp4\n-rw-r--r-- 1 lukas staff 511983 24 Apr 18:58 compact_monitor_1_1777046302568.mp4\n-rw-r--r-- 1 lukas staff 376881 24 Apr 19:03 compact_monitor_1_1777046622649.mp4\n-rw-r--r-- 1 lukas staff 2135572 24 Apr 19:09 compact_monitor_1_1777046942527.mp4\n-rw-r--r-- 1 lukas staff 2067005 24 Apr 19:14 compact_monitor_1_1777047252013.mp4\n-rw-r--r-- 1 lukas staff 325852 24 Apr 19:19 compact_monitor_1_1777047554283.mp4\n-rw-r--r-- 1 lukas staff 1326420 24 Apr 19:24 compact_monitor_1_1777047857184.mp4\n-rw-r--r-- 1 lukas staff 281500 24 Apr 19:29 compact_monitor_1_1777048160060.mp4\n-rw-r--r-- 1 lukas staff 375074 24 Apr 19:34 compact_monitor_1_1777048463034.mp4\n-rw-r--r-- 1 lukas staff 443180 24 Apr 19:39 compact_monitor_1_1777048765957.mp4\n-rw-r--r-- 1 lukas staff 284143 24 Apr 19:44 compact_monitor_1_1777049071027.mp4\n-rw-r--r-- 1 lukas staff 370030 24 Apr 19:49 compact_monitor_1_1777049375483.mp4\n-rw-r--r-- 1 lukas staff 282964 24 Apr 19:54 compact_monitor_1_1777049679741.mp4\n-rw-r--r-- 1 lukas staff 284261 24 Apr 19:59 compact_monitor_1_1777049981944.mp4\n-rw-r--r-- 1 lukas staff 283679 24 Apr 20:04 compact_monitor_1_1777050284761.mp4\n-rw-r--r-- 1 lukas staff 459716 24 Apr 20:09 compact_monitor_1_1777050586972.mp4\n-rw-r--r-- 1 lukas staff 282329 24 Apr 20:14 compact_monitor_1_1777050889084.mp4\n-rw-r--r-- 1 lukas staff 284125 24 Apr 20:19 compact_monitor_1_1777051190676.mp4\n-rw-r--r-- 1 lukas staff 285974 24 Apr 20:24 compact_monitor_1_1777051493257.mp4\n-rw-r--r-- 1 lukas staff 388518 24 Apr 20:29 compact_monitor_1_1777051796486.mp4\n-rw-r--r-- 1 lukas staff 281872 24 Apr 20:35 compact_monitor_1_1777052102980.mp4\n-rw-r--r-- 1 lukas staff 378553 24 Apr 20:40 compact_monitor_1_1777052404622.mp4\n-rw-r--r-- 1 lukas staff 286022 24 Apr 20:45 compact_monitor_1_1777052707340.mp4\n-rw-r--r-- 1 lukas staff 281962 24 Apr 20:50 compact_monitor_1_1777053011638.mp4\n-rw-r--r-- 1 lukas staff 266081 24 Apr 20:55 compact_monitor_1_1777053316848.mp4\n-rw-r--r-- 1 lukas staff 280935 24 Apr 21:05 compact_monitor_1_1777053917985.mp4\n-rw-r--r-- 1 lukas staff 382542 24 Apr 21:10 compact_monitor_1_1777054219554.mp4\n-rw-r--r-- 1 lukas staff 284199 24 Apr 21:15 compact_monitor_1_1777054523505.mp4\n-rw-r--r-- 1 lukas staff 283100 24 Apr 21:20 compact_monitor_1_1777054827421.mp4\n-rw-r--r-- 1 lukas staff 281910 24 Apr 21:25 compact_monitor_1_1777055133913.mp4\n-rw-r--r-- 1 lukas staff 282076 24 Apr 21:30 compact_monitor_1_1777055435796.mp4\n-rw-r--r-- 1 lukas staff 281620 24 Apr 21:35 compact_monitor_1_1777055737420.mp4\n-rw-r--r-- 1 lukas staff 379003 24 Apr 21:40 compact_monitor_1_1777056039080.mp4\n-rw-r--r-- 1 lukas staff 281563 24 Apr 21:45 compact_monitor_1_1777056341894.mp4\n-rw-r--r-- 1 lukas staff 282224 24 Apr 21:50 compact_monitor_1_1777056643558.mp4\n-rw-r--r-- 1 lukas staff 283065 24 Apr 21:55 compact_monitor_1_1777056945182.mp4\n-rw-r--r-- 1 lukas staff 282611 24 Apr 22:00 compact_monitor_1_1777057247444.mp4\n-rw-r--r-- 1 lukas staff 281790 24 Apr 22:05 compact_monitor_1_1777057549868.mp4\n-rw-r--r-- 1 lukas staff 254088 24 Apr 22:10 compact_monitor_1_1777057853482.mp4\n-rw-r--r-- 1 lukas staff 283072 24 Apr 22:20 compact_monitor_1_1777058454256.mp4\n-rw-r--r-- 1 lukas staff 281845 24 Apr 22:25 compact_monitor_1_1777058756125.mp4\n-rw-r--r-- 1 lukas staff 280140 24 Apr 22:30 compact_monitor_1_1777059057712.mp4\n-rw-r--r-- 1 lukas staff 607703 24 Apr 09:31 compact_monitor_2_1777012263153.mp4\n-rw-r--r-- 1 lukas staff 2606372 24 Apr 09:36 compact_monitor_2_1777012577621.mp4\n-rw-r--r-- 1 lukas staff 2186625 24 Apr 09:41 compact_monitor_2_1777012892871.mp4\n-rw-r--r-- 1 lukas staff 2139431 24 Apr 09:46 compact_monitor_2_1777013207979.mp4\n-rw-r--r-- 1 lukas staff 3770878 24 Apr 09:52 compact_monitor_2_1777013519888.mp4\n-rw-r--r-- 1 lukas staff 4167633 24 Apr 09:57 compact_monitor_2_1777013838804.mp4\n-rw-r--r-- 1 lukas staff 359177 24 Apr 10:02 compact_monitor_2_1777014150124.mp4\n-rw-r--r-- 1 lukas staff 358343 24 Apr 10:07 compact_monitor_2_1777014457309.mp4\n-rw-r--r-- 1 lukas staff 356953 24 Apr 10:12 compact_monitor_2_1777014762166.mp4\n-rw-r--r-- 1 lukas staff 358899 24 Apr 10:17 compact_monitor_2_1777015067707.mp4\n-rw-r--r-- 1 lukas staff 357509 24 Apr 10:22 compact_monitor_2_1777015373242.mp4\n-rw-r--r-- 1 lukas staff 356675 24 Apr 10:28 compact_monitor_2_1777015682416.mp4\n-rw-r--r-- 1 lukas staff 358899 24 Apr 10:33 compact_monitor_2_1777015994313.mp4\n-rw-r--r-- 1 lukas staff 359177 24 Apr 10:38 compact_monitor_2_1777016305302.mp4\n-rw-r--r-- 1 lukas staff 360151 24 Apr 10:43 compact_monitor_2_1777016613033.mp4\n-rw-r--r-- 1 lukas staff 362653 24 Apr 10:48 compact_monitor_2_1777016925353.mp4\n-rw-r--r-- 1 lukas staff 361959 24 Apr 10:53 compact_monitor_2_1777017231517.mp4\n-rw-r--r-- 1 lukas staff 357370 24 Apr 10:58 compact_monitor_2_1777017537009.mp4\n-rw-r--r-- 1 lukas staff 356953 24 Apr 11:04 compact_monitor_2_1777017849485.mp4\n-rw-r--r-- 1 lukas staff 358343 24 Apr 11:09 compact_monitor_2_1777018161860.mp4\n-rw-r--r-- 1 lukas staff 359316 24 Apr 11:14 compact_monitor_2_1777018476291.mp4\n-rw-r--r-- 1 lukas staff 360288 24 Apr 11:19 compact_monitor_2_1777018789196.mp4\n-rw-r--r-- 1 lukas staff 360706 24 Apr 11:25 compact_monitor_2_1777019101918.mp4\n-rw-r--r-- 1 lukas staff 360985 24 Apr 11:30 compact_monitor_2_1777019416527.mp4\n-rw-r--r-- 1 lukas staff 358343 24 Apr 11:35 compact_monitor_2_1777019728049.mp4\n-rw-r--r-- 1 lukas staff 360150 24 Apr 11:40 compact_monitor_2_1777020031755.mp4\n-rw-r--r-- 1 lukas staff 357648 24 Apr 11:45 compact_monitor_2_1777020337619.mp4\n-rw-r--r-- 1 lukas staff 356675 24 Apr 11:50 compact_monitor_2_1777020647019.mp4\n-rw-r--r-- 1 lukas staff 356536 24 Apr 11:56 compact_monitor_2_1777020959086.mp4\n-rw-r--r-- 1 lukas staff 361124 24 Apr 12:01 compact_monitor_2_1777021271140.mp4\n-rw-r--r-- 1 lukas staff 364183 24 Apr 12:06 compact_monitor_2_1777021585399.mp4\n-rw-r--r-- 1 lukas staff 363209 24 Apr 12:11 compact_monitor_2_1777021900365.mp4\n-rw-r--r-- 1 lukas staff 360984 24 Apr 12:16 compact_monitor_2_1777022208304.mp4\n-rw-r--r-- 1 lukas staff 359177 24 Apr 12:21 compact_monitor_2_1777022517344.mp4\n-rw-r--r-- 1 lukas staff 356675 24 Apr 12:27 compact_monitor_2_1777022828725.mp4\n-rw-r--r-- 1 lukas staff 358899 24 Apr 12:32 compact_monitor_2_1777023132111.mp4\n-rw-r--r-- 1 lukas staff 357509 24 Apr 12:37 compact_monitor_2_1777023439505.mp4\n-rw-r--r-- 1 lukas staff 357092 24 Apr 12:42 compact_monitor_2_1777023742945.mp4\n-rw-r--r-- 1 lukas staff 357231 24 Apr 12:47 compact_monitor_2_1777024049070.mp4\n-rw-r--r-- 1 lukas staff 357926 24 Apr 12:52 compact_monitor_2_1777024358438.mp4\n-rw-r--r-- 1 lukas staff 360984 24 Apr 13:25 compact_monitor_2_1777026337478.mp4\n-rw-r--r-- 1 lukas staff 441464 24 Apr 13:36 compact_monitor_2_1777026960622.mp4\n-rw-r--r-- 1 lukas staff 3294932 24 Apr 13:41 compact_monitor_2_1777027274051.mp4\n-rw-r--r-- 1 lukas staff 3053876 24 Apr 13:46 compact_monitor_2_1777027589141.mp4\n-rw-r--r-- 1 lukas staff 1046503 24 Apr 13:51 compact_monitor_2_1777027892570.mp4\n-rw-r--r-- 1 lukas staff 1334716 24 Apr 13:56 compact_monitor_2_1777028197180.mp4\n-rw-r--r-- 1 lukas staff 209289 24 Apr 14:01 compact_monitor_2_1777028502431.mp4\n-rw-r--r-- 1 lukas staff 208498 24 Apr 14:06 compact_monitor_2_1777028813325.mp4\n-rw-r--r-- 1 lukas staff 211343 24 Apr 14:12 compact_monitor_2_1777029117809.mp4\n-rw-r--r-- 1 lukas staff 208024 24 Apr 14:17 compact_monitor_2_1777029427678.mp4\n-rw-r--r-- 1 lukas staff 206286 24 Apr 14:22 compact_monitor_2_1777029734075.mp4\n-rw-r--r-- 1 lukas staff 206128 24 Apr 14:27 compact_monitor_2_1777030037028.mp4\n-rw-r--r-- 1 lukas staff 206128 24 Apr 14:32 compact_monitor_2_1777030339479.mp4\n-rw-r--r-- 1 lukas staff 206128 24 Apr 14:37 compact_monitor_2_1777030648067.mp4\n-rw-r--r-- 1 lukas staff 206128 24 Apr 14:42 compact_monitor_2_1777030956817.mp4\n-rw-r--r-- 1 lukas staff 206128 24 Apr 14:47 compact_monitor_2_1777031265473.mp4\n-rw-r--r-- 1 lukas staff 212291 24 Apr 14:52 compact_monitor_2_1777031576555.mp4\n-rw-r--r-- 1 lukas staff 209447 24 Apr 14:58 compact_monitor_2_1777031881300.mp4\n-rw-r--r-- 1 lukas staff 206760 24 Apr 15:03 compact_monitor_2_1777032189621.mp4\n-rw-r--r-- 1 lukas staff 206444 24 Apr 15:08 compact_monitor_2_1777032495303.mp4\n-rw-r--r-- 1 lukas staff 207234 24 Apr 15:13 compact_monitor_2_1777032800114.mp4\n-rw-r--r-- 1 lukas staff 207234 24 Apr 15:18 compact_monitor_2_1777033109659.mp4\n-rw-r--r-- 1 lukas staff 206128 24 Apr 15:23 compact_monitor_2_1777033412642.mp4\n-rw-r--r-- 1 lukas staff 195066 24 Apr 15:28 compact_monitor_2_1777033715187.mp4\n-rw-r--r-- 1 lukas staff 1809749 24 Apr 16:29 compact_monitor_2_1777037357085.mp4\n-rw-r--r-- 1 lukas staff 782872 24 Apr 16:34 compact_monitor_2_1777037664347.mp4\n-rw-r--r-- 1 lukas staff 1653552 24 Apr 16:39 compact_monitor_2_1777037968615.mp4\n-rw-r--r-- 1 lukas staff 1760588 24 Apr 16:44 compact_monitor_2_1777038279259.mp4\n-rw-r--r-- 1 lukas staff 784478 24 Apr 16:49 compact_monitor_2_1777038590004.mp4\n-rw-r--r-- 1 lukas staff 3211116 24 Apr 16:55 compact_monitor_2_1777038904612.mp4\n-rw-r--r-- 1 lukas staff 3278730 24 Apr 17:00 compact_monitor_2_1777039224011.mp4\n-rw-r--r-- 1 lukas staff 2139446 24 Apr 17:05 compact_monitor_2_1777039540771.mp4\n-rw-r--r-- 1 lukas staff 2764581 24 Apr 17:10 compact_monitor_2_1777039847346.mp4\n-rw-r--r-- 1 lukas staff 1379171 24 Apr 17:15 compact_monitor_2_1777040155261.mp4\n-rw-r--r-- 1 lukas staff 383251 24 Apr 17:20 compact_monitor_2_1777040459175.mp4\n-rw-r--r-- 1 lukas staff 1048985 24 Apr 17:26 compact_monitor_2_1777040768479.mp4\n-rw-r--r-- 1 lukas staff 327621 24 Apr 17:31 compact_monitor_2_1777041081412.mp4\n-rw-r--r-- 1 lukas staff 2348678 24 Apr 17:36 compact_monitor_2_1777041389884.mp4\n-rw-r--r-- 1 lukas staff 4241963 24 Apr 17:41 compact_monitor_2_1777041695709.mp4\n-rw-r--r-- 1 lukas staff 354123 24 Apr 17:46 compact_monitor_2_1777042003688.mp4\n-rw-r--r-- 1 lukas staff 353140 24 Apr 17:51 compact_monitor_2_1777042307243.mp4\n-rw-r--r-- 1 lukas staff 1275961 24 Apr 18:42 compact_monitor_2_1777045345607.mp4\n-rw-r--r-- 1 lukas staff 887486 24 Apr 18:47 compact_monitor_2_1777045660474.mp4\n-rw-r--r-- 1 lukas staff 799440 24 Apr 18:52 compact_monitor_2_1777045977011.mp4\n-rw-r--r-- 1 lukas staff 603476 24 Apr 18:58 compact_monitor_2_1777046308287.mp4\n-rw-r--r-- 1 lukas staff 440001 24 Apr 19:03 compact_monitor_2_1777046627295.mp4\n-rw-r--r-- 1 lukas staff 342701 24 Apr 19:09 compact_monitor_2_1777046945913.mp4\n-rw-r--r-- 1 lukas staff 312225 24 Apr 19:14 compact_monitor_2_1777047253317.mp4\n-rw-r--r-- 1 lukas staff 961678 24 Apr 19:19 compact_monitor_2_1777047555949.mp4\n-rw-r--r-- 1 lukas staff 1078873 24 Apr 19:24 compact_monitor_2_1777047858465.mp4\n-rw-r--r-- 1 lukas staff 319480 24 Apr 19:29 compact_monitor_2_1777048160848.mp4\n-rw-r--r-- 1 lukas staff 526738 24 Apr 19:34 compact_monitor_2_1777048464036.mp4\n-rw-r--r-- 1 lukas staff 1911635 24 Apr 19:39 compact_monitor_2_1777048767906.mp4\n-rw-r--r-- 1 lukas staff 1015782 24 Apr 19:44 compact_monitor_2_1777049072014.mp4\n-rw-r--r-- 1 lukas staff 640717 24 Apr 19:49 compact_monitor_2_1777049377082.mp4\n-rw-r--r-- 1 lukas staff 253614 24 Apr 19:54 compact_monitor_2_1777049680531.mp4\n-rw-r--r-- 1 lukas staff 191937 24 Apr 19:59 compact_monitor_2_1777049982986.mp4\n-rw-r--r-- 1 lukas staff 318254 24 Apr 20:04 compact_monitor_2_1777050285760.mp4\n-rw-r--r-- 1 lukas staff 390253 24 Apr 20:09 compact_monitor_2_1777050587996.mp4\n-rw-r--r-- 1 lukas staff 250972 24 Apr 20:14 compact_monitor_2_1777050889831.mp4\n-rw-r--r-- 1 lukas staff 458231 24 Apr 20:19 compact_monitor_2_1777051191646.mp4\n-rw-r--r-- 1 lukas staff 850547 24 Apr 20:24 compact_monitor_2_1777051494402.mp4\n-rw-r--r-- 1 lukas staff 1949530 24 Apr 20:30 compact_monitor_2_1777051799305.mp4\n-rw-r--r-- 1 lukas staff 211399 24 Apr 20:35 compact_monitor_2_1777052103733.mp4\n-rw-r--r-- 1 lukas staff 773576 24 Apr 20:40 compact_monitor_2_1777052405762.mp4\n-rw-r--r-- 1 lukas staff 1104788 24 Apr 20:45 compact_monitor_2_1777052708580.mp4\n-rw-r--r-- 1 lukas staff 176893 24 Apr 20:50 compact_monitor_2_1777053012336.mp4\n-rw-r--r-- 1 lukas staff 172521 24 Apr 20:55 compact_monitor_2_1777053317285.mp4\n-rw-r--r-- 1 lukas staff 200176 24 Apr 21:05 compact_monitor_2_1777053918703.mp4\n-rw-r--r-- 1 lukas staff 1230541 24 Apr 21:10 compact_monitor_2_1777054221337.mp4\n-rw-r--r-- 1 lukas staff 516796 24 Apr 21:15 compact_monitor_2_1777054524592.mp4\n-rw-r--r-- 1 lukas staff 1008198 24 Apr 21:20 compact_monitor_2_1777054828289.mp4\n-rw-r--r-- 1 lukas staff 478993 24 Apr 21:25 compact_monitor_2_1777055134659.mp4\n-rw-r--r-- 1 lukas staff 279720 24 Apr 21:30 compact_monitor_2_1777055436549.mp4\n-rw-r--r-- 1 lukas staff 292358 24 Apr 21:35 compact_monitor_2_1777055738189.mp4\n-rw-r--r-- 1 lukas staff 958174 24 Apr 21:40 compact_monitor_2_1777056040201.mp4\n-rw-r--r-- 1 lukas staff 178367 24 Apr 21:45 compact_monitor_2_1777056342715.mp4\n-rw-r--r-- 1 lukas staff 315157 24 Apr 21:50 compact_monitor_2_1777056644310.mp4\n-rw-r--r-- 1 lukas staff 475601 24 Apr 21:55 compact_monitor_2_1777056946056.mp4\n-rw-r--r-- 1 lukas staff 1070944 24 Apr 22:00 compact_monitor_2_1777057248209.mp4\n-rw-r--r-- 1 lukas staff 162092 24 Apr 22:05 compact_monitor_2_1777057550619.mp4\n-rw-r--r-- 1 lukas staff 114909 24 Apr 22:10 compact_monitor_2_1777057853837.mp4\n-rw-r--r-- 1 lukas staff 686731 24 Apr 22:20 compact_monitor_2_1777058454984.mp4\n-rw-r--r-- 1 lukas staff 246425 24 Apr 22:25 compact_monitor_2_1777058756865.mp4\n-rw-r--r-- 1 lukas staff 189964 24 Apr 22:30 compact_monitor_2_1777059058337.mp4\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-24 $ d ..\nzsh: command not found: d\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-24 $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd 2026-04-25\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-25 $ ll\ntotal 6808\ndrwxr-xr-x 23 lukas staff 736 25 Apr 17:27 .\ndrwxr-xr-x 18 lukas staff 576 25 Apr 17:25 ..\n-rw-r--r-- 1 lukas staff 105052 25 Apr 17:25 1777127146346_m2.jpg\n-rw-r--r-- 1 lukas staff 141502 25 Apr 17:25 1777127155648_m2.jpg\n-rw-r--r-- 1 lukas staff 146441 25 Apr 17:25 1777127156460_m2.jpg\n-rw-r--r-- 1 lukas staff 146984 25 Apr 17:25 1777127157630_m2.jpg\n-rw-r--r-- 1 lukas staff 147965 25 Apr 17:26 1777127161190_m2.jpg\n-rw-r--r-- 1 lukas staff 104201 25 Apr 17:26 1777127168009_m2.jpg\n-rw-r--r-- 1 lukas staff 140318 25 Apr 17:26 1777127168853_m2.jpg\n-rw-r--r-- 1 lukas staff 182933 25 Apr 17:26 1777127169731_m1.jpg\n-rw-r--r-- 1 lukas staff 184044 25 Apr 17:26 1777127171385_m1.jpg\n-rw-r--r-- 1 lukas staff 65486 25 Apr 17:26 1777127171385_m2.jpg\n-rw-r--r-- 1 lukas staff 185749 25 Apr 17:26 1777127176106_m1.jpg\n-rw-r--r-- 1 lukas staff 154999 25 Apr 17:26 1777127176816_m1.jpg\n-rw-r--r-- 1 lukas staff 103617 25 Apr 17:26 1777127177994_m2.jpg\n-rw-r--r-- 1 lukas staff 354841 25 Apr 17:26 1777127183656_m1.jpg\n-rw-r--r-- 1 lukas staff 148284 25 Apr 17:26 1777127185903_m1.jpg\n-rw-r--r-- 1 lukas staff 196248 25 Apr 17:26 1777127188928_m1.jpg\n-rw-r--r-- 1 lukas staff 103136 25 Apr 17:26 1777127200868_m2.jpg\n-rw-r--r-- 1 lukas staff 265344 25 Apr 17:26 1777127204173_m1.jpg\n-rw-r--r-- 1 lukas staff 220720 25 Apr 17:27 1777127222352_m1.jpg\n-rw-r--r-- 1 lukas staff 249706 25 Apr 17:27 1777127225353_m1.jpg\n-rw-r--r-- 1 lukas staff 103190 25 Apr 17:27 1777127231085_m2.jpg\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-25 $ ~/.screenpipe/screenpipe_sync.sh 2026-04-24\n[2026-04-25 17:27:44] ========================================\n[2026-04-25 17:27:44] Screenpipe sync starting for: 2026-04-24\n[2026-04-25 17:27:44] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (7.9G)\n[2026-04-25 17:27:44] ERROR: NAS not mounted at /Volumes/Test/screenpipe\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-25 $ ~/.screenpipe/screenpipe_sync.sh 2026-04-24\n[2026-04-25 17:28:17] ========================================\n[2026-04-25 17:28:17] Screenpipe sync starting for: 2026-04-24\n[2026-04-25 17:28:17] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (7.9G)\n NAS mount: OK /Volumes/Test/screenpipe\n Archive DB: exists (6.0G)\n Data dir: OK (250 files, 143M)\n UW PICO 5.09 New Buffer \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n [ Read 352 lines ] \n^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos \n^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell \n\n[+00m01s] ▶ Counting source rows for 2026-04-24\n frames: 5183\n elements: 297071\n ui_events: 6116\n ocr_text: 1508\n meetings: 2\n\n[+00m01s] ▶ Initialising tables, indexes, FTS\n creating tables ✓ 0m00s\n creating indexes ✓ 0m01s\n creating FTS tables ✓ 0m00s\n\n[+00m02s] ▶ Syncing data for 2026-04-24\n video_chunks ✓ 0m08s\n frames (5183 rows) ✓ 3m29s\u0000\t\n ocr_text (1508 rows) ✓ 0m17s\n ui_events (6116 rows) ✓ 0m01s\n elements (297071 rows) ✓ 1m18s\n meetings (2 rows) ✓ 0m00s\n\n[+05m15s] ▶ Updating FTS indexes\n elements_fts ✓ 1m20s\n frames_fts ✓ 4m16s\n ui_events_fts ✓ 0m03s\n\n[+10m54s] ▶ Verifying DB\n frames: 5183 / 5183 ✓\n elements: 297071 / 297071 ✓\n ui_events: 6116 / 6116 ✓\n ocr_text: 1508 / 1508 ✓\n meetings: 2 / 2 ✓\n\n[+12m03s] ▶ Copying data folder for 2026-04-24\n rsync 2026-04-24/ → NAS ✓ 0m14s (250 files, 143M)\n\n[2026-04-25 17:40:34] Archive DB size: 7.6G\n[2026-04-25 17:40:34] Total time: 12m17s\n[2026-04-25 17:40:34] Sync complete for 2026-04-24\n[2026-04-25 17:40:34] ========================================\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-25 $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd ..\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh \nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh 2026-04-24\n[2026-04-25 18:50:07] ========================================\n[2026-04-25 18:50:07] Screenpipe sync starting for: 2026-04-24\n[2026-04-25 18:50:07] ========================================\n\n[+00m00s] ▶ Preflight checks\n Source DB: OK (8.0G)\n NAS mount: OK /Volumes/screenpipe\n Archive DB: exists (6.0G)\n Data dir: OK (250 files, 143M)\n\n[+00m00s] ▶ Counting source rows for 2026-04-24\n frames: 5183\n elements: 297071\n ui_events: 6116\n ocr_text: 1508\n meetings: 2\n\n[+00m00s] ▶ Initialising tables, indexes, FTS\n creating tables ⠋ Runtime error near line 2: unable to open database: /Volumes/screenpipe/archive.db (23)\nParse error near line 3: unknown database nas\n CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames \n error here ---^\nParse error near line 4: unknown database nas\n CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements \n error here ---^\nParse error near line 5: unknown database nas\n CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events \n error here ---^\nParse error near line 6: unknown database nas\n CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text \n error here ---^\nParse error near line 7: unknown database nas\n CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks\n error here ---^\nParse error near line 8: unknown database nas\n CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings \n error here ---^\nRuntime error near line 9: no such database: nas\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch /Volumes/screenpipe/test.txt && echo \"OK\" && rm /Volumes/screenpipe/test.txt\ntouch: /Volumes/screenpipe/test.txt: Operation not permitted\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 /Volumes/screenpipe/archive.db \".tables\"\nError: unable to open database \"/Volumes/screenpipe/archive.db\": authorization denied\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch /Volumes/Test/screenpipe/test.txt && echo \"OK\" && rm /Volumes/Test/screenpipe/test.txt\nOK\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ mount | grep -i screenpipe\n//Adm1n@DXP4800PLUS-B5F._smb._tcp.local/screenpipe on /Volumes/screenpipe (smbfs, nodev, nosuid, mounted by lukas)\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 /Volumes/screenpipe/archive.db \".tables\"","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.19722222,"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.19722222,"top":0.05888889,"width":0.19722222,"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.2013889,"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.39444444,"top":0.05888889,"width":0.19722222,"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.3986111,"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":"screenpipe\"","depth":2,"bounds":{"left":0.59166664,"top":0.05888889,"width":0.19722222,"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.59583336,"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.7888889,"top":0.05888889,"width":0.19722222,"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.79305553,"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.95763886,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48958334,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
8930641531574319807
|
5424189026312617553
|
visual_change
|
accessibility
|
NULL
|
Last login: Fri Apr 24 12:59:23 on ttys009
Poetry Last login: Fri Apr 24 12:59:23 on ttys009
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 ~ $ cd ~/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ do -sh ~/.screenpipe
zsh: parse error near `do'
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ du -sh ~/.screenpipe
13G /Users/lukas/.screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ cd data/data
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll
total 40
drwxr-xr-x 17 lukas staff 544 24 Apr 09:19 .
drwxr-xr-x 167 lukas staff 5344 18 Apr 14:45 ..
-rw-r--r--@ 1 lukas staff 18436 18 Apr 14:45 .DS_Store
drwxr-xr-x 14 lukas staff 448 11 Apr 14:53 2026-04-09
drwxr-xr-x 30 lukas staff 960 12 Apr 09:02 2026-04-11
drwxr-xr-x 46 lukas staff 1472 13 Apr 15:13 2026-04-12
drwxr-xr-x 71 lukas staff 2272 14 Apr 09:24 2026-04-13
drwxr-xr-x 247 lukas staff 7904 15 Apr 09:59 2026-04-14
drwxr-xr-x 243 lukas staff 7776 16 Apr 09:13 2026-04-15
drwxr-xr-x 234 lukas staff 7488 17 Apr 08:57 2026-04-16
drwxr-xr-x 229 lukas staff 7328 18 Apr 13:35 2026-04-17
drwxr-xr-x 19 lukas staff 608 20 Apr 09:10 2026-04-18
drwxr-xr-x 194 lukas staff 6208 21 Apr 09:10 2026-04-20
drwxr-xr-x 248 lukas staff 7936 22 Apr 09:16 2026-04-21
drwxr-xr-x 224 lukas staff 7168 23 Apr 09:14 2026-04-22
drwxr-xr-x 106 lukas staff 3392 24 Apr 09:20 2026-04-23
drwxr-xr-x 292 lukas staff 9344 24 Apr 13:54 2026-04-24
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ ll
total 40
drwxr-xr-x 18 lukas staff 576 25 Apr 17:25 .
drwxr-xr-x 167 lukas staff 5344 18 Apr 14:45 ..
-rw-r--r--@ 1 lukas staff 18436 18 Apr 14:45 .DS_Store
drwxr-xr-x 14 lukas staff 448 11 Apr 14:53 2026-04-09
drwxr-xr-x 30 lukas staff 960 12 Apr 09:02 2026-04-11
drwxr-xr-x 46 lukas staff 1472 13 Apr 15:13 2026-04-12
drwxr-xr-x 71 lukas staff 2272 14 Apr 09:24 2026-04-13
drwxr-xr-x 247 lukas staff 7904 15 Apr 09:59 2026-04-14
drwxr-xr-x 243 lukas staff 7776 16 Apr 09:13 2026-04-15
drwxr-xr-x 234 lukas staff 7488 17 Apr 08:57 2026-04-16
drwxr-xr-x 229 lukas staff 7328 18 Apr 13:35 2026-04-17
drwxr-xr-x 19 lukas staff 608 20 Apr 09:10 2026-04-18
drwxr-xr-x 194 lukas staff 6208 21 Apr 09:10 2026-04-20
drwxr-xr-x 248 lukas staff 7936 22 Apr 09:16 2026-04-21
drwxr-xr-x 224 lukas staff 7168 23 Apr 09:14 2026-04-22
drwxr-xr-x 106 lukas staff 3392 24 Apr 09:20 2026-04-23
drwxr-xr-x 252 lukas staff 8064 24 Apr 22:30 2026-04-24
drwxr-xr-x 16 lukas staff 512 25 Apr 17:26 2026-04-25
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd 2026-04-24
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-24 $ ll
total 292176
drwxr-xr-x 252 lukas staff 8064 24 Apr 22:30 .
drwxr-xr-x 18 lukas staff 576 25 Apr 17:25 ..
-rw-r--r-- 1 lukas staff 1638831 24 Apr 09:31 compact_monitor_1_1777012261836.mp4
-rw-r--r-- 1 lukas staff 1391180 24 Apr 09:36 compact_monitor_1_1777012574636.mp4
-rw-r--r-- 1 lukas staff 2989162 24 Apr 09:41 compact_monitor_1_1777012889540.mp4
-rw-r--r-- 1 lukas staff 4053896 24 Apr 09:46 compact_monitor_1_1777013205196.mp4
-rw-r--r-- 1 lukas staff 2108331 24 Apr 09:51 compact_monitor_1_1777013517721.mp4
-rw-r--r-- 1 lukas staff 3158147 24 Apr 09:57 compact_monitor_1_1777013833236.mp4
-rw-r--r-- 1 lukas staff 224863 24 Apr 10:02 compact_monitor_1_1777014148462.mp4
-rw-r--r-- 1 lukas staff 224587 24 Apr 10:07 compact_monitor_1_1777014455847.mp4
-rw-r--r-- 1 lukas staff 223207 24 Apr 10:12 compact_monitor_1_1777014761287.mp4
-rw-r--r-- 1 lukas staff 224863 24 Apr 10:17 compact_monitor_1_1777015066130.mp4
-rw-r--r-- 1 lukas staff 223483 24 Apr 10:22 compact_monitor_1_1777015372226.mp4
-rw-r--r-- 1 lukas staff 222793 24 Apr 10:28 compact_monitor_1_1777015681605.mp4
-rw-r--r-- 1 lukas staff 224725 24 Apr 10:33 compact_monitor_1_1777015992029.mp4
-rw-r--r-- 1 lukas staff 225829 24 Apr 10:38 compact_monitor_1_1777016303248.mp4
-rw-r--r-- 1 lukas staff 225830 24 Apr 10:43 compact_monitor_1_1777016610979.mp4
-rw-r--r-- 1 lukas staff 228313 24 Apr 10:48 compact_monitor_1_1777016922353.mp4
-rw-r--r-- 1 lukas staff 227763 24 Apr 10:53 compact_monitor_1_1777017228818.mp4
-rw-r--r-- 1 lukas staff 223483 24 Apr 10:58 compact_monitor_1_1777017535961.mp4
-rw-r--r-- 1 lukas staff 223069 24 Apr 11:04 compact_monitor_1_1777017848118.mp4
-rw-r--r-- 1 lukas staff 224449 24 Apr 11:09 compact_monitor_1_1777018160122.mp4
-rw-r--r-- 1 lukas staff 225277 24 Apr 11:14 compact_monitor_1_1777018473585.mp4
-rw-r--r-- 1 lukas staff 226243 24 Apr 11:19 compact_monitor_1_1777018786981.mp4
-rw-r--r-- 1 lukas staff 226659 24 Apr 11:25 compact_monitor_1_1777019099556.mp4
-rw-r--r-- 1 lukas staff 227486 24 Apr 11:30 compact_monitor_1_1777019413061.mp4
-rw-r--r-- 1 lukas staff 225001 24 Apr 11:35 compact_monitor_1_1777019726395.mp4
-rw-r--r-- 1 lukas staff 226520 24 Apr 11:40 compact_monitor_1_1777020029531.mp4
-rw-r--r-- 1 lukas staff 223759 24 Apr 11:45 compact_monitor_1_1777020336492.mp4
-rw-r--r-- 1 lukas staff 222793 24 Apr 11:50 compact_monitor_1_1777020646184.mp4
-rw-r--r-- 1 lukas staff 222793 24 Apr 11:55 compact_monitor_1_1777020957673.mp4
-rw-r--r-- 1 lukas staff 227210 24 Apr 12:01 compact_monitor_1_1777021268422.mp4
-rw-r--r-- 1 lukas staff 230247 24 Apr 12:06 compact_monitor_1_1777021581300.mp4
-rw-r--r-- 1 lukas staff 229281 24 Apr 12:11 compact_monitor_1_1777021897044.mp4
-rw-r--r-- 1 lukas staff 227486 24 Apr 12:16 compact_monitor_1_1777022205733.mp4
-rw-r--r-- 1 lukas staff 224863 24 Apr 12:21 compact_monitor_1_1777022515833.mp4
-rw-r--r-- 1 lukas staff 222793 24 Apr 12:27 compact_monitor_1_1777022827784.mp4
-rw-r--r-- 1 lukas staff 225001 24 Apr 12:32 compact_monitor_1_1777023130468.mp4
-rw-r--r-- 1 lukas staff 223759 24 Apr 12:37 compact_monitor_1_1777023438384.mp4
-rw-r--r-- 1 lukas staff 223207 24 Apr 12:42 compact_monitor_1_1777023742059.mp4
-rw-r--r-- 1 lukas staff 223345 24 Apr 12:47 compact_monitor_1_1777024048142.mp4
-rw-r--r-- 1 lukas staff 223621 24 Apr 12:52 compact_monitor_1_1777024357357.mp4
-rw-r--r-- 1 lukas staff 226795 24 Apr 13:25 compact_monitor_1_1777026334121.mp4
-rw-r--r-- 1 lukas staff 74262 24 Apr 13:36 compact_monitor_1_1777026960071.mp4
-rw-r--r-- 1 lukas staff 75007 24 Apr 13:41 compact_monitor_1_1777027271559.mp4
-rw-r--r-- 1 lukas staff 66030 24 Apr 13:46 compact_monitor_1_1777027588021.mp4
-rw-r--r-- 1 lukas staff 206995 24 Apr 13:51 compact_monitor_1_1777027891692.mp4
-rw-r--r-- 1 lukas staff 1470509 24 Apr 13:56 compact_monitor_1_1777028193924.mp4
-rw-r--r-- 1 lukas staff 63562 24 Apr 14:01 compact_monitor_1_1777028500650.mp4
-rw-r--r-- 1 lukas staff 63177 24 Apr 14:06 compact_monitor_1_1777028811691.mp4
-rw-r--r-- 1 lukas staff 65865 24 Apr 14:11 compact_monitor_1_1777029114984.mp4
-rw-r--r-- 1 lukas staff 62921 24 Apr 14:17 compact_monitor_1_1777029426109.mp4
-rw-r--r-- 1 lukas staff 61129 24 Apr 14:22 compact_monitor_1_1777029733317.mp4
-rw-r--r-- 1 lukas staff 61001 24 Apr 14:27 compact_monitor_1_1777030036330.mp4
-rw-r--r-- 1 lukas staff 61001 24 Apr 14:32 compact_monitor_1_1777030338771.mp4
-rw-r--r-- 1 lukas staff 61001 24 Apr 14:37 compact_monitor_1_1777030647353.mp4
-rw-r--r-- 1 lukas staff 61001 24 Apr 14:42 compact_monitor_1_1777030956098.mp4
-rw-r--r-- 1 lukas staff 60873 24 Apr 14:47 compact_monitor_1_1777031264764.mp4
-rw-r--r-- 1 lukas staff 65995 24 Apr 14:52 compact_monitor_1_1777031573441.mp4
-rw-r--r-- 1 lukas staff 62793 24 Apr 14:58 compact_monitor_1_1777031879569.mp4
-rw-r--r-- 1 lukas staff 61513 24 Apr 15:03 compact_monitor_1_1777032188612.mp4
-rw-r--r-- 1 lukas staff 61129 24 Apr 15:08 compact_monitor_1_1777032494307.mp4
-rw-r--r-- 1 lukas staff 62025 24 Apr 15:13 compact_monitor_1_1777032798963.mp4
-rw-r--r-- 1 lukas staff 61897 24 Apr 15:18 compact_monitor_1_1777033108532.mp4
-rw-r--r-- 1 lukas staff 61001 24 Apr 15:23 compact_monitor_1_1777033411928.mp4
-rw-r--r-- 1 lukas staff 57493 24 Apr 15:28 compact_monitor_1_1777033714810.mp4
-rw-r--r-- 1 lukas staff 372372 24 Apr 16:29 compact_monitor_1_1777037355438.mp4
-rw-r--r-- 1 lukas staff 411247 24 Apr 16:34 compact_monitor_1_1777037663371.mp4
-rw-r--r-- 1 lukas staff 616103 24 Apr 16:39 compact_monitor_1_1777037967552.mp4
-rw-r--r-- 1 lukas staff 338030 24 Apr 16:44 compact_monitor_1_1777038278174.mp4
-rw-r--r-- 1 lukas staff 336601 24 Apr 16:49 compact_monitor_1_1777038589136.mp4
-rw-r--r-- 1 lukas staff 1198645 24 Apr 16:55 compact_monitor_1_1777038901569.mp4
-rw-r--r-- 1 lukas staff 573966 24 Apr 17:00 compact_monitor_1_1777039221027.mp4
-rw-r--r-- 1 lukas staff 501809 24 Apr 17:05 compact_monitor_1_1777039538961.mp4
-rw-r--r-- 1 lukas staff 343102 24 Apr 17:10 compact_monitor_1_1777039845665.mp4
-rw-r--r-- 1 lukas staff 339201 24 Apr 17:15 compact_monitor_1_1777040154006.mp4
-rw-r--r-- 1 lukas staff 336696 24 Apr 17:20 compact_monitor_1_1777040458288.mp4
-rw-r--r-- 1 lukas staff 336768 24 Apr 17:26 compact_monitor_1_1777040767579.mp4
-rw-r--r-- 1 lukas staff 336733 24 Apr 17:31 compact_monitor_1_1777041080182.mp4
-rw-r--r-- 1 lukas staff 336774 24 Apr 17:36 compact_monitor_1_1777041388935.mp4
-rw-r--r-- 1 lukas staff 1041183 24 Apr 17:41 compact_monitor_1_1777041693870.mp4
-rw-r--r-- 1 lukas staff 209140 24 Apr 17:46 compact_monitor_1_1777042002848.mp4
-rw-r--r-- 1 lukas staff 208555 24 Apr 17:51 compact_monitor_1_1777042306433.mp4
-rw-r--r-- 1 lukas staff 353704 24 Apr 18:42 compact_monitor_1_1777045344500.mp4
-rw-r--r-- 1 lukas staff 209852 24 Apr 18:47 compact_monitor_1_1777045659150.mp4
-rw-r--r-- 1 lukas staff 761800 24 Apr 18:52 compact_monitor_1_1777045973244.mp4
-rw-r--r-- 1 lukas staff 511983 24 Apr 18:58 compact_monitor_1_1777046302568.mp4
-rw-r--r-- 1 lukas staff 376881 24 Apr 19:03 compact_monitor_1_1777046622649.mp4
-rw-r--r-- 1 lukas staff 2135572 24 Apr 19:09 compact_monitor_1_1777046942527.mp4
-rw-r--r-- 1 lukas staff 2067005 24 Apr 19:14 compact_monitor_1_1777047252013.mp4
-rw-r--r-- 1 lukas staff 325852 24 Apr 19:19 compact_monitor_1_1777047554283.mp4
-rw-r--r-- 1 lukas staff 1326420 24 Apr 19:24 compact_monitor_1_1777047857184.mp4
-rw-r--r-- 1 lukas staff 281500 24 Apr 19:29 compact_monitor_1_1777048160060.mp4
-rw-r--r-- 1 lukas staff 375074 24 Apr 19:34 compact_monitor_1_1777048463034.mp4
-rw-r--r-- 1 lukas staff 443180 24 Apr 19:39 compact_monitor_1_1777048765957.mp4
-rw-r--r-- 1 lukas staff 284143 24 Apr 19:44 compact_monitor_1_1777049071027.mp4
-rw-r--r-- 1 lukas staff 370030 24 Apr 19:49 compact_monitor_1_1777049375483.mp4
-rw-r--r-- 1 lukas staff 282964 24 Apr 19:54 compact_monitor_1_1777049679741.mp4
-rw-r--r-- 1 lukas staff 284261 24 Apr 19:59 compact_monitor_1_1777049981944.mp4
-rw-r--r-- 1 lukas staff 283679 24 Apr 20:04 compact_monitor_1_1777050284761.mp4
-rw-r--r-- 1 lukas staff 459716 24 Apr 20:09 compact_monitor_1_1777050586972.mp4
-rw-r--r-- 1 lukas staff 282329 24 Apr 20:14 compact_monitor_1_1777050889084.mp4
-rw-r--r-- 1 lukas staff 284125 24 Apr 20:19 compact_monitor_1_1777051190676.mp4
-rw-r--r-- 1 lukas staff 285974 24 Apr 20:24 compact_monitor_1_1777051493257.mp4
-rw-r--r-- 1 lukas staff 388518 24 Apr 20:29 compact_monitor_1_1777051796486.mp4
-rw-r--r-- 1 lukas staff 281872 24 Apr 20:35 compact_monitor_1_1777052102980.mp4
-rw-r--r-- 1 lukas staff 378553 24 Apr 20:40 compact_monitor_1_1777052404622.mp4
-rw-r--r-- 1 lukas staff 286022 24 Apr 20:45 compact_monitor_1_1777052707340.mp4
-rw-r--r-- 1 lukas staff 281962 24 Apr 20:50 compact_monitor_1_1777053011638.mp4
-rw-r--r-- 1 lukas staff 266081 24 Apr 20:55 compact_monitor_1_1777053316848.mp4
-rw-r--r-- 1 lukas staff 280935 24 Apr 21:05 compact_monitor_1_1777053917985.mp4
-rw-r--r-- 1 lukas staff 382542 24 Apr 21:10 compact_monitor_1_1777054219554.mp4
-rw-r--r-- 1 lukas staff 284199 24 Apr 21:15 compact_monitor_1_1777054523505.mp4
-rw-r--r-- 1 lukas staff 283100 24 Apr 21:20 compact_monitor_1_1777054827421.mp4
-rw-r--r-- 1 lukas staff 281910 24 Apr 21:25 compact_monitor_1_1777055133913.mp4
-rw-r--r-- 1 lukas staff 282076 24 Apr 21:30 compact_monitor_1_1777055435796.mp4
-rw-r--r-- 1 lukas staff 281620 24 Apr 21:35 compact_monitor_1_1777055737420.mp4
-rw-r--r-- 1 lukas staff 379003 24 Apr 21:40 compact_monitor_1_1777056039080.mp4
-rw-r--r-- 1 lukas staff 281563 24 Apr 21:45 compact_monitor_1_1777056341894.mp4
-rw-r--r-- 1 lukas staff 282224 24 Apr 21:50 compact_monitor_1_1777056643558.mp4
-rw-r--r-- 1 lukas staff 283065 24 Apr 21:55 compact_monitor_1_1777056945182.mp4
-rw-r--r-- 1 lukas staff 282611 24 Apr 22:00 compact_monitor_1_1777057247444.mp4
-rw-r--r-- 1 lukas staff 281790 24 Apr 22:05 compact_monitor_1_1777057549868.mp4
-rw-r--r-- 1 lukas staff 254088 24 Apr 22:10 compact_monitor_1_1777057853482.mp4
-rw-r--r-- 1 lukas staff 283072 24 Apr 22:20 compact_monitor_1_1777058454256.mp4
-rw-r--r-- 1 lukas staff 281845 24 Apr 22:25 compact_monitor_1_1777058756125.mp4
-rw-r--r-- 1 lukas staff 280140 24 Apr 22:30 compact_monitor_1_1777059057712.mp4
-rw-r--r-- 1 lukas staff 607703 24 Apr 09:31 compact_monitor_2_1777012263153.mp4
-rw-r--r-- 1 lukas staff 2606372 24 Apr 09:36 compact_monitor_2_1777012577621.mp4
-rw-r--r-- 1 lukas staff 2186625 24 Apr 09:41 compact_monitor_2_1777012892871.mp4
-rw-r--r-- 1 lukas staff 2139431 24 Apr 09:46 compact_monitor_2_1777013207979.mp4
-rw-r--r-- 1 lukas staff 3770878 24 Apr 09:52 compact_monitor_2_1777013519888.mp4
-rw-r--r-- 1 lukas staff 4167633 24 Apr 09:57 compact_monitor_2_1777013838804.mp4
-rw-r--r-- 1 lukas staff 359177 24 Apr 10:02 compact_monitor_2_1777014150124.mp4
-rw-r--r-- 1 lukas staff 358343 24 Apr 10:07 compact_monitor_2_1777014457309.mp4
-rw-r--r-- 1 lukas staff 356953 24 Apr 10:12 compact_monitor_2_1777014762166.mp4
-rw-r--r-- 1 lukas staff 358899 24 Apr 10:17 compact_monitor_2_1777015067707.mp4
-rw-r--r-- 1 lukas staff 357509 24 Apr 10:22 compact_monitor_2_1777015373242.mp4
-rw-r--r-- 1 lukas staff 356675 24 Apr 10:28 compact_monitor_2_1777015682416.mp4
-rw-r--r-- 1 lukas staff 358899 24 Apr 10:33 compact_monitor_2_1777015994313.mp4
-rw-r--r-- 1 lukas staff 359177 24 Apr 10:38 compact_monitor_2_1777016305302.mp4
-rw-r--r-- 1 lukas staff 360151 24 Apr 10:43 compact_monitor_2_1777016613033.mp4
-rw-r--r-- 1 lukas staff 362653 24 Apr 10:48 compact_monitor_2_1777016925353.mp4
-rw-r--r-- 1 lukas staff 361959 24 Apr 10:53 compact_monitor_2_1777017231517.mp4
-rw-r--r-- 1 lukas staff 357370 24 Apr 10:58 compact_monitor_2_1777017537009.mp4
-rw-r--r-- 1 lukas staff 356953 24 Apr 11:04 compact_monitor_2_1777017849485.mp4
-rw-r--r-- 1 lukas staff 358343 24 Apr 11:09 compact_monitor_2_1777018161860.mp4
-rw-r--r-- 1 lukas staff 359316 24 Apr 11:14 compact_monitor_2_1777018476291.mp4
-rw-r--r-- 1 lukas staff 360288 24 Apr 11:19 compact_monitor_2_1777018789196.mp4
-rw-r--r-- 1 lukas staff 360706 24 Apr 11:25 compact_monitor_2_1777019101918.mp4
-rw-r--r-- 1 lukas staff 360985 24 Apr 11:30 compact_monitor_2_1777019416527.mp4
-rw-r--r-- 1 lukas staff 358343 24 Apr 11:35 compact_monitor_2_1777019728049.mp4
-rw-r--r-- 1 lukas staff 360150 24 Apr 11:40 compact_monitor_2_1777020031755.mp4
-rw-r--r-- 1 lukas staff 357648 24 Apr 11:45 compact_monitor_2_1777020337619.mp4
-rw-r--r-- 1 lukas staff 356675 24 Apr 11:50 compact_monitor_2_1777020647019.mp4
-rw-r--r-- 1 lukas staff 356536 24 Apr 11:56 compact_monitor_2_1777020959086.mp4
-rw-r--r-- 1 lukas staff 361124 24 Apr 12:01 compact_monitor_2_1777021271140.mp4
-rw-r--r-- 1 lukas staff 364183 24 Apr 12:06 compact_monitor_2_1777021585399.mp4
-rw-r--r-- 1 lukas staff 363209 24 Apr 12:11 compact_monitor_2_1777021900365.mp4
-rw-r--r-- 1 lukas staff 360984 24 Apr 12:16 compact_monitor_2_1777022208304.mp4
-rw-r--r-- 1 lukas staff 359177 24 Apr 12:21 compact_monitor_2_1777022517344.mp4
-rw-r--r-- 1 lukas staff 356675 24 Apr 12:27 compact_monitor_2_1777022828725.mp4
-rw-r--r-- 1 lukas staff 358899 24 Apr 12:32 compact_monitor_2_1777023132111.mp4
-rw-r--r-- 1 lukas staff 357509 24 Apr 12:37 compact_monitor_2_1777023439505.mp4
-rw-r--r-- 1 lukas staff 357092 24 Apr 12:42 compact_monitor_2_1777023742945.mp4
-rw-r--r-- 1 lukas staff 357231 24 Apr 12:47 compact_monitor_2_1777024049070.mp4
-rw-r--r-- 1 lukas staff 357926 24 Apr 12:52 compact_monitor_2_1777024358438.mp4
-rw-r--r-- 1 lukas staff 360984 24 Apr 13:25 compact_monitor_2_1777026337478.mp4
-rw-r--r-- 1 lukas staff 441464 24 Apr 13:36 compact_monitor_2_1777026960622.mp4
-rw-r--r-- 1 lukas staff 3294932 24 Apr 13:41 compact_monitor_2_1777027274051.mp4
-rw-r--r-- 1 lukas staff 3053876 24 Apr 13:46 compact_monitor_2_1777027589141.mp4
-rw-r--r-- 1 lukas staff 1046503 24 Apr 13:51 compact_monitor_2_1777027892570.mp4
-rw-r--r-- 1 lukas staff 1334716 24 Apr 13:56 compact_monitor_2_1777028197180.mp4
-rw-r--r-- 1 lukas staff 209289 24 Apr 14:01 compact_monitor_2_1777028502431.mp4
-rw-r--r-- 1 lukas staff 208498 24 Apr 14:06 compact_monitor_2_1777028813325.mp4
-rw-r--r-- 1 lukas staff 211343 24 Apr 14:12 compact_monitor_2_1777029117809.mp4
-rw-r--r-- 1 lukas staff 208024 24 Apr 14:17 compact_monitor_2_1777029427678.mp4
-rw-r--r-- 1 lukas staff 206286 24 Apr 14:22 compact_monitor_2_1777029734075.mp4
-rw-r--r-- 1 lukas staff 206128 24 Apr 14:27 compact_monitor_2_1777030037028.mp4
-rw-r--r-- 1 lukas staff 206128 24 Apr 14:32 compact_monitor_2_1777030339479.mp4
-rw-r--r-- 1 lukas staff 206128 24 Apr 14:37 compact_monitor_2_1777030648067.mp4
-rw-r--r-- 1 lukas staff 206128 24 Apr 14:42 compact_monitor_2_1777030956817.mp4
-rw-r--r-- 1 lukas staff 206128 24 Apr 14:47 compact_monitor_2_1777031265473.mp4
-rw-r--r-- 1 lukas staff 212291 24 Apr 14:52 compact_monitor_2_1777031576555.mp4
-rw-r--r-- 1 lukas staff 209447 24 Apr 14:58 compact_monitor_2_1777031881300.mp4
-rw-r--r-- 1 lukas staff 206760 24 Apr 15:03 compact_monitor_2_1777032189621.mp4
-rw-r--r-- 1 lukas staff 206444 24 Apr 15:08 compact_monitor_2_1777032495303.mp4
-rw-r--r-- 1 lukas staff 207234 24 Apr 15:13 compact_monitor_2_1777032800114.mp4
-rw-r--r-- 1 lukas staff 207234 24 Apr 15:18 compact_monitor_2_1777033109659.mp4
-rw-r--r-- 1 lukas staff 206128 24 Apr 15:23 compact_monitor_2_1777033412642.mp4
-rw-r--r-- 1 lukas staff 195066 24 Apr 15:28 compact_monitor_2_1777033715187.mp4
-rw-r--r-- 1 lukas staff 1809749 24 Apr 16:29 compact_monitor_2_1777037357085.mp4
-rw-r--r-- 1 lukas staff 782872 24 Apr 16:34 compact_monitor_2_1777037664347.mp4
-rw-r--r-- 1 lukas staff 1653552 24 Apr 16:39 compact_monitor_2_1777037968615.mp4
-rw-r--r-- 1 lukas staff 1760588 24 Apr 16:44 compact_monitor_2_1777038279259.mp4
-rw-r--r-- 1 lukas staff 784478 24 Apr 16:49 compact_monitor_2_1777038590004.mp4
-rw-r--r-- 1 lukas staff 3211116 24 Apr 16:55 compact_monitor_2_1777038904612.mp4
-rw-r--r-- 1 lukas staff 3278730 24 Apr 17:00 compact_monitor_2_1777039224011.mp4
-rw-r--r-- 1 lukas staff 2139446 24 Apr 17:05 compact_monitor_2_1777039540771.mp4
-rw-r--r-- 1 lukas staff 2764581 24 Apr 17:10 compact_monitor_2_1777039847346.mp4
-rw-r--r-- 1 lukas staff 1379171 24 Apr 17:15 compact_monitor_2_1777040155261.mp4
-rw-r--r-- 1 lukas staff 383251 24 Apr 17:20 compact_monitor_2_1777040459175.mp4
-rw-r--r-- 1 lukas staff 1048985 24 Apr 17:26 compact_monitor_2_1777040768479.mp4
-rw-r--r-- 1 lukas staff 327621 24 Apr 17:31 compact_monitor_2_1777041081412.mp4
-rw-r--r-- 1 lukas staff 2348678 24 Apr 17:36 compact_monitor_2_1777041389884.mp4
-rw-r--r-- 1 lukas staff 4241963 24 Apr 17:41 compact_monitor_2_1777041695709.mp4
-rw-r--r-- 1 lukas staff 354123 24 Apr 17:46 compact_monitor_2_1777042003688.mp4
-rw-r--r-- 1 lukas staff 353140 24 Apr 17:51 compact_monitor_2_1777042307243.mp4
-rw-r--r-- 1 lukas staff 1275961 24 Apr 18:42 compact_monitor_2_1777045345607.mp4
-rw-r--r-- 1 lukas staff 887486 24 Apr 18:47 compact_monitor_2_1777045660474.mp4
-rw-r--r-- 1 lukas staff 799440 24 Apr 18:52 compact_monitor_2_1777045977011.mp4
-rw-r--r-- 1 lukas staff 603476 24 Apr 18:58 compact_monitor_2_1777046308287.mp4
-rw-r--r-- 1 lukas staff 440001 24 Apr 19:03 compact_monitor_2_1777046627295.mp4
-rw-r--r-- 1 lukas staff 342701 24 Apr 19:09 compact_monitor_2_1777046945913.mp4
-rw-r--r-- 1 lukas staff 312225 24 Apr 19:14 compact_monitor_2_1777047253317.mp4
-rw-r--r-- 1 lukas staff 961678 24 Apr 19:19 compact_monitor_2_1777047555949.mp4
-rw-r--r-- 1 lukas staff 1078873 24 Apr 19:24 compact_monitor_2_1777047858465.mp4
-rw-r--r-- 1 lukas staff 319480 24 Apr 19:29 compact_monitor_2_1777048160848.mp4
-rw-r--r-- 1 lukas staff 526738 24 Apr 19:34 compact_monitor_2_1777048464036.mp4
-rw-r--r-- 1 lukas staff 1911635 24 Apr 19:39 compact_monitor_2_1777048767906.mp4
-rw-r--r-- 1 lukas staff 1015782 24 Apr 19:44 compact_monitor_2_1777049072014.mp4
-rw-r--r-- 1 lukas staff 640717 24 Apr 19:49 compact_monitor_2_1777049377082.mp4
-rw-r--r-- 1 lukas staff 253614 24 Apr 19:54 compact_monitor_2_1777049680531.mp4
-rw-r--r-- 1 lukas staff 191937 24 Apr 19:59 compact_monitor_2_1777049982986.mp4
-rw-r--r-- 1 lukas staff 318254 24 Apr 20:04 compact_monitor_2_1777050285760.mp4
-rw-r--r-- 1 lukas staff 390253 24 Apr 20:09 compact_monitor_2_1777050587996.mp4
-rw-r--r-- 1 lukas staff 250972 24 Apr 20:14 compact_monitor_2_1777050889831.mp4
-rw-r--r-- 1 lukas staff 458231 24 Apr 20:19 compact_monitor_2_1777051191646.mp4
-rw-r--r-- 1 lukas staff 850547 24 Apr 20:24 compact_monitor_2_1777051494402.mp4
-rw-r--r-- 1 lukas staff 1949530 24 Apr 20:30 compact_monitor_2_1777051799305.mp4
-rw-r--r-- 1 lukas staff 211399 24 Apr 20:35 compact_monitor_2_1777052103733.mp4
-rw-r--r-- 1 lukas staff 773576 24 Apr 20:40 compact_monitor_2_1777052405762.mp4
-rw-r--r-- 1 lukas staff 1104788 24 Apr 20:45 compact_monitor_2_1777052708580.mp4
-rw-r--r-- 1 lukas staff 176893 24 Apr 20:50 compact_monitor_2_1777053012336.mp4
-rw-r--r-- 1 lukas staff 172521 24 Apr 20:55 compact_monitor_2_1777053317285.mp4
-rw-r--r-- 1 lukas staff 200176 24 Apr 21:05 compact_monitor_2_1777053918703.mp4
-rw-r--r-- 1 lukas staff 1230541 24 Apr 21:10 compact_monitor_2_1777054221337.mp4
-rw-r--r-- 1 lukas staff 516796 24 Apr 21:15 compact_monitor_2_1777054524592.mp4
-rw-r--r-- 1 lukas staff 1008198 24 Apr 21:20 compact_monitor_2_1777054828289.mp4
-rw-r--r-- 1 lukas staff 478993 24 Apr 21:25 compact_monitor_2_1777055134659.mp4
-rw-r--r-- 1 lukas staff 279720 24 Apr 21:30 compact_monitor_2_1777055436549.mp4
-rw-r--r-- 1 lukas staff 292358 24 Apr 21:35 compact_monitor_2_1777055738189.mp4
-rw-r--r-- 1 lukas staff 958174 24 Apr 21:40 compact_monitor_2_1777056040201.mp4
-rw-r--r-- 1 lukas staff 178367 24 Apr 21:45 compact_monitor_2_1777056342715.mp4
-rw-r--r-- 1 lukas staff 315157 24 Apr 21:50 compact_monitor_2_1777056644310.mp4
-rw-r--r-- 1 lukas staff 475601 24 Apr 21:55 compact_monitor_2_1777056946056.mp4
-rw-r--r-- 1 lukas staff 1070944 24 Apr 22:00 compact_monitor_2_1777057248209.mp4
-rw-r--r-- 1 lukas staff 162092 24 Apr 22:05 compact_monitor_2_1777057550619.mp4
-rw-r--r-- 1 lukas staff 114909 24 Apr 22:10 compact_monitor_2_1777057853837.mp4
-rw-r--r-- 1 lukas staff 686731 24 Apr 22:20 compact_monitor_2_1777058454984.mp4
-rw-r--r-- 1 lukas staff 246425 24 Apr 22:25 compact_monitor_2_1777058756865.mp4
-rw-r--r-- 1 lukas staff 189964 24 Apr 22:30 compact_monitor_2_1777059058337.mp4
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-24 $ d ..
zsh: command not found: d
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-24 $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd 2026-04-25
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-25 $ ll
total 6808
drwxr-xr-x 23 lukas staff 736 25 Apr 17:27 .
drwxr-xr-x 18 lukas staff 576 25 Apr 17:25 ..
-rw-r--r-- 1 lukas staff 105052 25 Apr 17:25 1777127146346_m2.jpg
-rw-r--r-- 1 lukas staff 141502 25 Apr 17:25 1777127155648_m2.jpg
-rw-r--r-- 1 lukas staff 146441 25 Apr 17:25 1777127156460_m2.jpg
-rw-r--r-- 1 lukas staff 146984 25 Apr 17:25 1777127157630_m2.jpg
-rw-r--r-- 1 lukas staff 147965 25 Apr 17:26 1777127161190_m2.jpg
-rw-r--r-- 1 lukas staff 104201 25 Apr 17:26 1777127168009_m2.jpg
-rw-r--r-- 1 lukas staff 140318 25 Apr 17:26 1777127168853_m2.jpg
-rw-r--r-- 1 lukas staff 182933 25 Apr 17:26 1777127169731_m1.jpg
-rw-r--r-- 1 lukas staff 184044 25 Apr 17:26 1777127171385_m1.jpg
-rw-r--r-- 1 lukas staff 65486 25 Apr 17:26 1777127171385_m2.jpg
-rw-r--r-- 1 lukas staff 185749 25 Apr 17:26 1777127176106_m1.jpg
-rw-r--r-- 1 lukas staff 154999 25 Apr 17:26 1777127176816_m1.jpg
-rw-r--r-- 1 lukas staff 103617 25 Apr 17:26 1777127177994_m2.jpg
-rw-r--r-- 1 lukas staff 354841 25 Apr 17:26 1777127183656_m1.jpg
-rw-r--r-- 1 lukas staff 148284 25 Apr 17:26 1777127185903_m1.jpg
-rw-r--r-- 1 lukas staff 196248 25 Apr 17:26 1777127188928_m1.jpg
-rw-r--r-- 1 lukas staff 103136 25 Apr 17:26 1777127200868_m2.jpg
-rw-r--r-- 1 lukas staff 265344 25 Apr 17:26 1777127204173_m1.jpg
-rw-r--r-- 1 lukas staff 220720 25 Apr 17:27 1777127222352_m1.jpg
-rw-r--r-- 1 lukas staff 249706 25 Apr 17:27 1777127225353_m1.jpg
-rw-r--r-- 1 lukas staff 103190 25 Apr 17:27 1777127231085_m2.jpg
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-25 $ ~/.screenpipe/screenpipe_sync.sh 2026-04-24
[2026-04-25 17:27:44] ========================================
[2026-04-25 17:27:44] Screenpipe sync starting for: 2026-04-24
[2026-04-25 17:27:44] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (7.9G)
[2026-04-25 17:27:44] ERROR: NAS not mounted at /Volumes/Test/screenpipe
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-25 $ ~/.screenpipe/screenpipe_sync.sh 2026-04-24
[2026-04-25 17:28:17] ========================================
[2026-04-25 17:28:17] Screenpipe sync starting for: 2026-04-24
[2026-04-25 17:28:17] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (7.9G)
NAS mount: OK /Volumes/Test/screenpipe
Archive DB: exists (6.0G)
Data dir: OK (250 files, 143M)
UW PICO 5.09 New Buffer
[ Read 352 lines ]
^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text ^T To Spell
[+00m01s] ▶ Counting source rows for 2026-04-24
frames: 5183
elements: 297071
ui_events: 6116
ocr_text: 1508
meetings: 2
[+00m01s] ▶ Initialising tables, indexes, FTS
creating tables ✓ 0m00s
creating indexes ✓ 0m01s
creating FTS tables ✓ 0m00s
[+00m02s] ▶ Syncing data for 2026-04-24
video_chunks ✓ 0m08s
frames (5183 rows) ✓ 3m29s
ocr_text (1508 rows) ✓ 0m17s
ui_events (6116 rows) ✓ 0m01s
elements (297071 rows) ✓ 1m18s
meetings (2 rows) ✓ 0m00s
[+05m15s] ▶ Updating FTS indexes
elements_fts ✓ 1m20s
frames_fts ✓ 4m16s
ui_events_fts ✓ 0m03s
[+10m54s] ▶ Verifying DB
frames: 5183 / 5183 ✓
elements: 297071 / 297071 ✓
ui_events: 6116 / 6116 ✓
ocr_text: 1508 / 1508 ✓
meetings: 2 / 2 ✓
[+12m03s] ▶ Copying data folder for 2026-04-24
rsync 2026-04-24/ → NAS ✓ 0m14s (250 files, 143M)
[2026-04-25 17:40:34] Archive DB size: 7.6G
[2026-04-25 17:40:34] Total time: 12m17s
[2026-04-25 17:40:34] Sync complete for 2026-04-24
[2026-04-25 17:40:34] ========================================
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data/2026-04-25 $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data/data $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe/data $ cd ..
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano screenpipe_sync.sh
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ~/.screenpipe/screenpipe_sync.sh 2026-04-24
[2026-04-25 18:50:07] ========================================
[2026-04-25 18:50:07] Screenpipe sync starting for: 2026-04-24
[2026-04-25 18:50:07] ========================================
[+00m00s] ▶ Preflight checks
Source DB: OK (8.0G)
NAS mount: OK /Volumes/screenpipe
Archive DB: exists (6.0G)
Data dir: OK (250 files, 143M)
[+00m00s] ▶ Counting source rows for 2026-04-24
frames: 5183
elements: 297071
ui_events: 6116
ocr_text: 1508
meetings: 2
[+00m00s] ▶ Initialising tables, indexes, FTS
creating tables ⠋ Runtime error near line 2: unable to open database: /Volumes/screenpipe/archive.db (23)
Parse error near line 3: unknown database nas
CREATE TABLE IF NOT EXISTS nas.frames AS SELECT * FROM main.frames
error here ---^
Parse error near line 4: unknown database nas
CREATE TABLE IF NOT EXISTS nas.elements AS SELECT * FROM main.elements
error here ---^
Parse error near line 5: unknown database nas
CREATE TABLE IF NOT EXISTS nas.ui_events AS SELECT * FROM main.ui_events
error here ---^
Parse error near line 6: unknown database nas
CREATE TABLE IF NOT EXISTS nas.ocr_text AS SELECT * FROM main.ocr_text
error here ---^
Parse error near line 7: unknown database nas
CREATE TABLE IF NOT EXISTS nas.video_chunks AS SELECT * FROM main.video_chunks
error here ---^
Parse error near line 8: unknown database nas
CREATE TABLE IF NOT EXISTS nas.meetings AS SELECT * FROM main.meetings
error here ---^
Runtime error near line 9: no such database: nas
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch /Volumes/screenpipe/test.txt && echo "OK" && rm /Volumes/screenpipe/test.txt
touch: /Volumes/screenpipe/test.txt: Operation not permitted
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 /Volumes/screenpipe/archive.db ".tables"
Error: unable to open database "/Volumes/screenpipe/archive.db": authorization denied
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ touch /Volumes/Test/screenpipe/test.txt && echo "OK" && rm /Volumes/Test/screenpipe/test.txt
OK
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ mount | grep -i screenpipe
//Adm1n@DXP4800PLUS-B5F._smb._tcp.local/screenpipe on /Volumes/screenpipe (smbfs, nodev, nosuid, mounted by lukas)
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 /Volumes/screenpipe/archive.db ".tables"
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
81185
|
|
10108
|
196
|
11
|
2026-04-14T08:13:09.095848+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776154389095_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+Notion CalendarEditViewWindowHelpELHomeDMsActivit +Notion CalendarEditViewWindowHelpELHomeDMsActivityFilesJiminny ...= UnreadsThreadsHuddlesDrafts & sentDirectoriesExternal connections* Starredplatform-inner-teamPS> 0(alo)Support Daily - in 3 h 47 m•)).100% 247Tue 14 Apr 11:13:09Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan Georgiev86 дMessagesAdd canvas+minoitymunnoзначи не сьздава веднага по принцип, в някакьв час на деня лиToday ~Lukas Kovalik 10:36 AMтова ще гледа всичко applicable за днес (ако не понедлник или начало на месец е само daily)крон го пуска през нощтака че мануално пусни при тестванеако трябва да тестваме други репорти може да променя команда за тестване да приема параметьр за report template и д си пускамеопределен когато тествамеNikolav Yankov 10:41 AM$1N+Firefox# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yousзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aa...
|
NULL
|
8930095277515465043
|
NULL
|
visual_change
|
ocr
|
NULL
|
+Notion CalendarEditViewWindowHelpELHomeDMsActivit +Notion CalendarEditViewWindowHelpELHomeDMsActivityFilesJiminny ...= UnreadsThreadsHuddlesDrafts & sentDirectoriesExternal connections* Starredplatform-inner-teamPS> 0(alo)Support Daily - in 3 h 47 m•)).100% 247Tue 14 Apr 11:13:09Search Jiminny IncAneliya Angelova, Nikolay Yankov, Steliyan Georgiev86 дMessagesAdd canvas+minoitymunnoзначи не сьздава веднага по принцип, в някакьв час на деня лиToday ~Lukas Kovalik 10:36 AMтова ще гледа всичко applicable за днес (ако не понедлник или начало на месец е само daily)крон го пуска през нощтака че мануално пусни при тестванеако трябва да тестваме други репорти може да променя команда за тестване да приема параметьр за report template и д си пускамеопределен когато тествамеNikolav Yankov 10:41 AM$1N+Firefox# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yousзабавих се че ми се разбазикаха settings за средипуснах и мина и fail-наима result но e failedзначиREASON_NOT_ENOUGH_ACTIVITIESвиж дали има нещо в OD със този филтьрNikolay Yankov 11:01 AMДобреMessage Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev+Aa...
|
10106
|
|
2320
|
49
|
11
|
2026-04-12T09:47:11.686518+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-12/1775 /Users/lukas/.screenpipe/data/data/2026-04-12/1775987231686_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
NotionFileEditViewHistoryWindowHelp* Unable to acc NotionFileEditViewHistoryWindowHelp* Unable to access $DOCKERO ₴1DEV (-zsh)O $2APP (-zsh)• *3-zshX4• screenpipe - Activity Summary (MCP)(start_time: "2026-04-11T00:00:00",end_time:"2026-• screenpipe - Activity Summary (MCP)(start_time: "2026-04-11T00:00:00Z", end_time:"2026• Here's your activity summary for yesterday (April 11):Total active time: ~3 hours (roughly 15:00-21:00 UTC)Main focus areasScreenpipe development (~2h combined)- Heavy terminalwork in iTerm2 (67 min in zsh + SSH)- Building a screenpipe data UI - working remotely on [IP_ADDRESS] via SSH- Editing report.py and a bash script in VS Code- Checking the Screenpipe Dashboard in FirefoxWork (Jiminny) (~15 min)- Checked the Scrum Board for Platform Sprint 1 Q2- Looked at service desk queues- Checked an email about an "Ask Jiminny" test report- Briefly attempted to access app.dev.jiminny.com (got a page load error)- Explored Gemini for Google Workspace (request access)NAS / personalinfra (~12 min)- Browsing your NAS at nas.lakylak.xyzReading (Denník N) (~6 min)- Article about the Artemis II / Orion splashdown- Coverage on Iran and Trump newsClaude (~5 min)- Used Claude, likely related to screenpipe work (querying the screenpipe search API)TL;DR: Mostly a dev day focused on building something with screenpipe data (a reporting? for shortcuts(alo]Activity MonitorAll ProcessesProcess NameBoosteroidVirtual Machine Service for ClaudeFirefoxCP Isolated Web ContentFirefoxFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentWindowServerFirefoxCP Isolated Web ContentPostman Helper (Renderer)Claude Helper (Renderer)FirefoxCP Isolated Web ContentFirefox GPU HelperVTDecoderXPCServiceFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxNotion Helper (Renderer)Firefox GPU HelperFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentclaudeiTerm2MEMORY PRESSUREMem...2,16 GB1,57 GB869,3 MB760,0 MB740,9 MB710,5 MB670,0 MB633,0 MB626,7 MB625,6 MB621,7 MB607,3 MB591,4 MB584,0 MB498,6 MB479,4 MB458,5 MB391,6 MB368,8 MB361,7 MB356,0 MB333,4 MB332,7 MB317,1 MB315,4 MB278,6 MB250,5 MB227,4 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% L8Sun 12 Apr 12:47:11CPUMemoryEnergyDiskThreadsPorts3520277525232327291525291124228320262325292625242522137586781288671231207 29912633521512325316512111367032122311612313512512212112511770965PID51319538681828716623445434582940745681425472517458321662851328166565141144413114844418173351834316799167505186717319446565165650910487816,00 GB14,19 GB <1,76 GB3,72 GBApp Memory:Wired Memory:Compressed:NetworkUserlukaslukaslukaslukaslukaslukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,78 GB2,67 GB7,18 GB...
|
NULL
|
8929775335390113865
|
NULL
|
click
|
ocr
|
NULL
|
NotionFileEditViewHistoryWindowHelp* Unable to acc NotionFileEditViewHistoryWindowHelp* Unable to access $DOCKERO ₴1DEV (-zsh)O $2APP (-zsh)• *3-zshX4• screenpipe - Activity Summary (MCP)(start_time: "2026-04-11T00:00:00",end_time:"2026-• screenpipe - Activity Summary (MCP)(start_time: "2026-04-11T00:00:00Z", end_time:"2026• Here's your activity summary for yesterday (April 11):Total active time: ~3 hours (roughly 15:00-21:00 UTC)Main focus areasScreenpipe development (~2h combined)- Heavy terminalwork in iTerm2 (67 min in zsh + SSH)- Building a screenpipe data UI - working remotely on [IP_ADDRESS] via SSH- Editing report.py and a bash script in VS Code- Checking the Screenpipe Dashboard in FirefoxWork (Jiminny) (~15 min)- Checked the Scrum Board for Platform Sprint 1 Q2- Looked at service desk queues- Checked an email about an "Ask Jiminny" test report- Briefly attempted to access app.dev.jiminny.com (got a page load error)- Explored Gemini for Google Workspace (request access)NAS / personalinfra (~12 min)- Browsing your NAS at nas.lakylak.xyzReading (Denník N) (~6 min)- Article about the Artemis II / Orion splashdown- Coverage on Iran and Trump newsClaude (~5 min)- Used Claude, likely related to screenpipe work (querying the screenpipe search API)TL;DR: Mostly a dev day focused on building something with screenpipe data (a reporting? for shortcuts(alo]Activity MonitorAll ProcessesProcess NameBoosteroidVirtual Machine Service for ClaudeFirefoxCP Isolated Web ContentFirefoxFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentWindowServerFirefoxCP Isolated Web ContentPostman Helper (Renderer)Claude Helper (Renderer)FirefoxCP Isolated Web ContentFirefox GPU HelperVTDecoderXPCServiceFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxNotion Helper (Renderer)Firefox GPU HelperFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentclaudeiTerm2MEMORY PRESSUREMem...2,16 GB1,57 GB869,3 MB760,0 MB740,9 MB710,5 MB670,0 MB633,0 MB626,7 MB625,6 MB621,7 MB607,3 MB591,4 MB584,0 MB498,6 MB479,4 MB458,5 MB391,6 MB368,8 MB361,7 MB356,0 MB333,4 MB332,7 MB317,1 MB315,4 MB278,6 MB250,5 MB227,4 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% L8Sun 12 Apr 12:47:11CPUMemoryEnergyDiskThreadsPorts3520277525232327291525291124228320262325292625242522137586781288671231207 29912633521512325316512111367032122311612313512512212112511770965PID51319538681828716623445434582940745681425472517458321662851328166565141144413114844418173351834316799167505186717319446565165650910487816,00 GB14,19 GB <1,76 GB3,72 GBApp Memory:Wired Memory:Compressed:NetworkUserlukaslukaslukaslukaslukaslukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,78 GB2,67 GB7,18 GB...
|
2319
|
|
77539
|
1953
|
4
|
2026-04-24T09:33:13.419227+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777023193419_m1.jpg...
|
Firefox
|
Pipelines - jiminny/app — Work
|
True
|
app.circleci.com/pipelines/github/jiminny/app
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
[JY-20738] Debug AJ report User Pilot tracking - J [JY-20738] Debug AJ report User Pilot tracking - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-20738 add debug logs on AJ report UP tracking by LakyLak · Pull Request #12013 · jiminny/app
JY-20738 add debug logs on AJ report UP tracking by LakyLak · Pull Request #12013 · jiminny/app
Close tab
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"[JY-20738] Debug AJ report User Pilot tracking - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","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":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20738 add debug logs on AJ report UP tracking by LakyLak · Pull Request #12013 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20738 add debug logs on AJ report UP tracking by LakyLak · Pull Request #12013 · jiminny/app","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":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Nudge-created","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Nudge-created","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Pipelines - jiminny/app","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":"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,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
8929578907137151712
|
-7202533024146202418
|
click
|
accessibility
|
NULL
|
[JY-20738] Debug AJ report User Pilot tracking - J [JY-20738] Debug AJ report User Pilot tracking - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-20738 add debug logs on AJ report UP tracking by LakyLak · Pull Request #12013 · jiminny/app
JY-20738 add debug logs on AJ report UP tracking by LakyLak · Pull Request #12013 · jiminny/app
Close tab
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)...
|
NULL
|
|
29300
|
601
|
38
|
2026-04-15T14:36:32.151924+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776263792151_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
10985138307902035200/200VVImperial Age10Right-clic 10985138307902035200/200VVImperial Age10Right-click to attack this building!Capped Ram4 -2/1900/6kovalfklukas (Britons))200/2005 Magnus Olafsson: 39586/39586NV1 kovaliklukas: 36325/36325IV8 Almish Yiltawar: 29368/29368NVRajyapala: 23265/23265NV6 LÁszl6 I: 12344/12344 €7 Maximilian ef Habsburg: 6521/6531-W3 Huascám: 596615266IV4 Lowig VI: 5919/5919IV...
|
NULL
|
8929567832585147372
|
NULL
|
visual_change
|
ocr
|
NULL
|
10985138307902035200/200VVImperial Age10Right-clic 10985138307902035200/200VVImperial Age10Right-click to attack this building!Capped Ram4 -2/1900/6kovalfklukas (Britons))200/2005 Magnus Olafsson: 39586/39586NV1 kovaliklukas: 36325/36325IV8 Almish Yiltawar: 29368/29368NVRajyapala: 23265/23265NV6 LÁszl6 I: 12344/12344 €7 Maximilian ef Habsburg: 6521/6531-W3 Huascám: 596615266IV4 Lowig VI: 5919/5919IV...
|
29298
|
|
9995
|
193
|
30
|
2026-04-14T08:06:01.396820+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776153961396_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Firefox...FileEoitViewHistoryBookmarksProfilesMeet Firefox...FileEoitViewHistoryBookmarksProfilesMeetToolsWindowHelpmeet.google.com/mie-gawc-dsiAllow meet.aoogle.com to use vour camera andmicrophone?CJ FaceTime HD CameraShow previewPlatform Sprint 1 Q2 - Platform Tea& Configure SSH access to multiple e@ Console Home | Console Home | usSecurityGroup | EC2 |us-east-2JY-20543 add AJ reports User pilcSRD-6779 | JY-20632 | Unable to |( Jy 19798 evaluation for ai activitya Jiminny8 Ask Jiminny test report - 8 Apr 20:≤ Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleCa CloudWatch | us-east-2Meet - Daily - Platform+ New Tabsoundcore AeroClip• Remember for all cameras and microphonesBlockAllowLukas KovalikC< 40 ll O f SupportDaily- in 3h54m CA 100%C & Tue 14 Apr 11:06:[EMAIL] - PlatformE. Scheduled for1, Apr 16 9:45 AMGemini to take notese notes and transcriptStartJoin anywayClick AllowYou can still turn off your microphone and camera anytime in the meeting.Other ways to join4) S)Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporaryaccess to meting captions. Using Ask Gstcin wrn t rfate a recording or store meeting data. The meeting...
|
NULL
|
8929397545551997932
|
NULL
|
visual_change
|
ocr
|
NULL
|
Firefox...FileEoitViewHistoryBookmarksProfilesMeet Firefox...FileEoitViewHistoryBookmarksProfilesMeetToolsWindowHelpmeet.google.com/mie-gawc-dsiAllow meet.aoogle.com to use vour camera andmicrophone?CJ FaceTime HD CameraShow previewPlatform Sprint 1 Q2 - Platform Tea& Configure SSH access to multiple e@ Console Home | Console Home | usSecurityGroup | EC2 |us-east-2JY-20543 add AJ reports User pilcSRD-6779 | JY-20632 | Unable to |( Jy 19798 evaluation for ai activitya Jiminny8 Ask Jiminny test report - 8 Apr 20:≤ Service-Desk - Queues - PlatformC JY-20543 add AJ reports User pilc(x) Configure SSH access to multipleCa CloudWatch | us-east-2Meet - Daily - Platform+ New Tabsoundcore AeroClip• Remember for all cameras and microphonesBlockAllowLukas KovalikC< 40 ll O f SupportDaily- in 3h54m CA 100%C & Tue 14 Apr 11:06:[EMAIL] - PlatformE. Scheduled for1, Apr 16 9:45 AMGemini to take notese notes and transcriptStartJoin anywayClick AllowYou can still turn off your microphone and camera anytime in the meeting.Other ways to join4) S)Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporaryaccess to meting captions. Using Ask Gstcin wrn t rfate a recording or store meeting data. The meeting...
|
NULL
|
|
29096
|
597
|
25
|
2026-04-15T14:31:20.155246+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776263480155_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditViewGoEDHomeDMSActivityFilesLater..• +SlackFileEditViewGoEDHomeDMSActivityFilesLater..•More+→Jiminny ...+CHISHICCIITIS# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...Direct messagesAneliya Angelova, ...Stoyan TanevVes. Galya Dimitrova€. Vasil VasilevR. Steliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaR. Nikolay Nikolovii: AppsJira CloudToastHistoryWindowHelpSearch Jiminny Inc# releases8 226 0MessagesVIeWSOU@ Files• Bookmarks+Today ~GitHub APP3:28 PM7 new commits pushed to master by nikolay-yankov24b989ee - Enhance SECFIXdocumentation and policiesa3a0a742 - Update SECFIX Slack channelreference in documentation and workflowfiles071c999d - Merge branch 'master' intoimprove-secfix-bot-15-04-2026981e9a1a - Update SECFIX_PROMPT.mdto enhance clarity on upgrade safety andchangelog reviews6e938e53 - Enhance SECFIX workflow withSlack notification optionsShow more( jiminny/app Added by GitHubNewCircleCl APP3:53 PMDeployment Successful!Project: appWhen:04/15/202612:53:30Tag:View JobMessage #releases+Aa...Activity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefox GPU HelperVTDecoderXPCServiceFirefoxCP Isolated Web ContentSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)Notion Helper (Renderer)claudeClaude Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentCode Helper (Renderer)MEMORY PRESSUREMem...2,04 GB1,21 GB1 012,8 MB963,0 MB879,2 MB800,1 MB794,5 MB547,5 MB544,2 MB543,9 MB515,8 MB496,7 MB460,0 MB440,3 MB409,6 MB409,0 MB395,0 MB392,6 MB372,5 MB344,8 MB333,7 MB326,2 MB326,0 MB312,3 MB261,5 MB249,9 MB240,5 MB209,3 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 17:31:19CPUMemoryDiskThreads3921742587312529271123152526242623221521131528282718EnergyPorts60319 8057261231 20413120 047127241254167119185122123123126119118172328722191251281 836124183PID93892407801442974146644203084236713801914673938993548041863358314365235276430163689848173265481148509106051935833482984878561388534016,00 GB14,18 GB <1,78 GB3,16 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,53 GB2,97 GB7,13 GB...
|
NULL
|
8929372449024263150
|
NULL
|
click
|
ocr
|
NULL
|
+SlackFileEditViewGoEDHomeDMSActivityFilesLater..• +SlackFileEditViewGoEDHomeDMSActivityFilesLater..•More+→Jiminny ...+CHISHICCIITIS# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...Direct messagesAneliya Angelova, ...Stoyan TanevVes. Galya Dimitrova€. Vasil VasilevR. Steliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaR. Nikolay Nikolovii: AppsJira CloudToastHistoryWindowHelpSearch Jiminny Inc# releases8 226 0MessagesVIeWSOU@ Files• Bookmarks+Today ~GitHub APP3:28 PM7 new commits pushed to master by nikolay-yankov24b989ee - Enhance SECFIXdocumentation and policiesa3a0a742 - Update SECFIX Slack channelreference in documentation and workflowfiles071c999d - Merge branch 'master' intoimprove-secfix-bot-15-04-2026981e9a1a - Update SECFIX_PROMPT.mdto enhance clarity on upgrade safety andchangelog reviews6e938e53 - Enhance SECFIX workflow withSlack notification optionsShow more( jiminny/app Added by GitHubNewCircleCl APP3:53 PMDeployment Successful!Project: appWhen:04/15/202612:53:30Tag:View JobMessage #releases+Aa...Activity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefox GPU HelperVTDecoderXPCServiceFirefoxCP Isolated Web ContentSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)Notion Helper (Renderer)claudeClaude Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentCode Helper (Renderer)MEMORY PRESSUREMem...2,04 GB1,21 GB1 012,8 MB963,0 MB879,2 MB800,1 MB794,5 MB547,5 MB544,2 MB543,9 MB515,8 MB496,7 MB460,0 MB440,3 MB409,6 MB409,0 MB395,0 MB392,6 MB372,5 MB344,8 MB333,7 MB326,2 MB326,0 MB312,3 MB261,5 MB249,9 MB240,5 MB209,3 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 17:31:19CPUMemoryDiskThreads3921742587312529271123152526242623221521131528282718EnergyPorts60319 8057261231 20413120 047127241254167119185122123123126119118172328722191251281 836124183PID93892407801442974146644203084236713801914673938993548041863358314365235276430163689848173265481148509106051935833482984878561388534016,00 GB14,18 GB <1,78 GB3,16 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,53 GB2,97 GB7,13 GB...
|
NULL
|
|
5539
|
102
|
87
|
2026-04-13T13:18:03.640324+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-13/1776 /Users/lukas/.screenpipe/data/data/2026-04-13/1776086283640_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp•DOCKER* Unable to access screenpipe activity dataO $1DEV (-zsh)O 882APP (-zsh)• *3|-zsh• 84-zsh• ₴5-zsh86-zsh®Bash(curl -s "http://localhost:3030/search?content_type=ocr&start_time=2026-04-11T00:00:00Z&end_time=2026-04-13T23:59:59Z&limit=5000&offset=0"im..)L Running..98%RMon 13 Apr 16:18:031812>&1O 87python3* Unable to access s...-с "sash commandcurl-s "http://localhost:3030/search?content_type=ocr&start_time=2026-04-11T00:00:00Z&end_time=2026-04-13T23:59:59Z&limit=5000&offset=0"import json, sysfrom collections import defaultdictdata = json.load(sys.stdin)items = data.get('data', [])apps = defaultdict(int)windows = defaultdict(int)for item in items:c = item.get('content', (})app = c.get('app_name'"Unknown") orwindow = C.get('window_name', ""S or Unknown'apps[app] += 1if window:windows [f'[{app}] {window}'] += 1print(f'Total frames: {len(items)}')printOprint('=== Apps (frames) ===')for app, count in sorted(apps.items(), key=lambda x: -x[1]):print(f'{app}: {count}')printOprint('=== Top Windows ===')for w, count in sorted(windows.items(), key=lambda x: -x[1])[:25]:print(f' {count:4d}x {w[:110]}')" 2>81Run shell commando you want to proceed?• 1.Yes2.Yes, and don't ask again for similar commands in /Users/lukas3. Noisc to cancel • Tab to amend• ctrl+e to explainpython3 -c"...
|
NULL
|
8929307462777750047
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp•DOCKER* Unable to access screenpipe activity dataO $1DEV (-zsh)O 882APP (-zsh)• *3|-zsh• 84-zsh• ₴5-zsh86-zsh®Bash(curl -s "http://localhost:3030/search?content_type=ocr&start_time=2026-04-11T00:00:00Z&end_time=2026-04-13T23:59:59Z&limit=5000&offset=0"im..)L Running..98%RMon 13 Apr 16:18:031812>&1O 87python3* Unable to access s...-с "sash commandcurl-s "http://localhost:3030/search?content_type=ocr&start_time=2026-04-11T00:00:00Z&end_time=2026-04-13T23:59:59Z&limit=5000&offset=0"import json, sysfrom collections import defaultdictdata = json.load(sys.stdin)items = data.get('data', [])apps = defaultdict(int)windows = defaultdict(int)for item in items:c = item.get('content', (})app = c.get('app_name'"Unknown") orwindow = C.get('window_name', ""S or Unknown'apps[app] += 1if window:windows [f'[{app}] {window}'] += 1print(f'Total frames: {len(items)}')printOprint('=== Apps (frames) ===')for app, count in sorted(apps.items(), key=lambda x: -x[1]):print(f'{app}: {count}')printOprint('=== Top Windows ===')for w, count in sorted(windows.items(), key=lambda x: -x[1])[:25]:print(f' {count:4d}x {w[:110]}')" 2>81Run shell commando you want to proceed?• 1.Yes2.Yes, and don't ask again for similar commands in /Users/lukas3. Noisc to cancel • Tab to amend• ctrl+e to explainpython3 -c"...
|
NULL
|
|
43238
|
920
|
40
|
2026-04-17T07:59:09.639957+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776412749639_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
PostmanFileEditViewWindowHelpec2-user@ip-10-20-6-1 PostmanFileEditViewWindowHelpec2-user@ip-10-20-6-111:~X4(wl|• ₴5Backend Chapter • 31 m left100% C47 8• Fri 17 Apr 10:59:091₴81DOCKER• 281DEV (-zsh)APP (-zsh)-zsh* Review screenp...• X6ec2-user@ip-10-30-...$7Days Active: 3/3Daily Average: 265.33root@67e84f80b9d1:/home/jiminny# php artisan crm:hubspot-webhook metrics -T 459 --from 2026-04-15 -DINFOManaging webhook metrics 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-...88...
|
NULL
|
8929253810069677612
|
NULL
|
click
|
ocr
|
NULL
|
PostmanFileEditViewWindowHelpec2-user@ip-10-20-6-1 PostmanFileEditViewWindowHelpec2-user@ip-10-20-6-111:~X4(wl|• ₴5Backend Chapter • 31 m left100% C47 8• Fri 17 Apr 10:59:091₴81DOCKER• 281DEV (-zsh)APP (-zsh)-zsh* Review screenp...• X6ec2-user@ip-10-30-...$7Days Active: 3/3Daily Average: 265.33root@67e84f80b9d1:/home/jiminny# php artisan crm:hubspot-webhook metrics -T 459 --from 2026-04-15 -DINFOManaging webhook metrics 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-...88...
|
43237
|
|
81796
|
NULL
|
0
|
2026-04-26T13:34:50.167184+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-26/1777 /Users/lukas/.screenpipe/data/data/2026-04-26/1777210490167_m1.jpg...
|
Firefox
|
DXP4800PLUS-B5F8 — Personal
|
True
|
nas.lakylak.xyz/desktop/#/
|
monitor_1
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-04-26/1777 /Users/lukas/.screenpipe/data/data/2026-04-26/1777210490167_m1.jpg...
|
DXP4800PLUS-B5F8
Inbox (9) - [EMAIL] - Gmail
(57) DXP4800PLUS-B5F8
Inbox (9) - [EMAIL] - Gmail
(57) Inbox | [EMAIL] | Proton Mail
Welcome back
Welcome back
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
Gitea Official Website
Gitea Official Website
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
New Tab
New Tab
MikroTik · CRS304-4XG-IN
MikroTik · CRS304-4XG-IN
New Tab
Customize sidebar
Open Le Chat Mistral (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
971
B/s
350
B/s
Files
Control Panel
Storage
App Center
Logs
Support
Task Manager
Universal Search
Music
Cloud Drives
Theater
Photos
Online Office
TextEdit
Virtual Machine
Downloads
DLNA
File Version Explorer
Security
Jellyfin-HT
SAN Manager
Vault
Snapshot
Comics
Sync & Backup...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXRadioButton","text":"Inbox (9) - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"(57) Inbox | kovaliklukas@proton.me | Proton Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Welcome back","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Welcome back","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Today's Deals","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today's Deals","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"architecture - screenpipe docs","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"architecture - screenpipe docs","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Code works better when you stop treating it like a machine - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Code works better when you stop treating it like a machine - kovaliklukas@gmail.com - Gmail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Platform","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Platform","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - kovaliklukas@gmail.com - Gmail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Gitea Official Website","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gitea Official Website","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea","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":"AXRadioButton","text":"MikroTik · CRS304-4XG-IN","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"MikroTik · CRS304-4XG-IN","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,"bounds":{"left":0.484375,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Le Chat Mistral (⌃X)","depth":6,"bounds":{"left":0.5072917,"top":0.0,"width":0.022222223,"height":0.035555556},"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.53055555,"top":0.0,"width":0.022222223,"height":0.035555556},"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.5538194,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.57708335,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"971","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"B/s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"350","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"B/s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Files","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Control Panel","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Storage","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"App Center","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Logs","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Support","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Task Manager","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Universal Search","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Music","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Cloud Drives","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Theater","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Photos","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online Office","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"TextEdit","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Virtual Machine","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Downloads","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DLNA","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"File Version Explorer","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Security","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jellyfin-HT","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SAN Manager","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Vault","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Snapshot","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Comics","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync & Backup","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8929135535282334838
|
5239161093374888717
|
app_switch
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox (9) - [EMAIL] - Gmail
(57) DXP4800PLUS-B5F8
Inbox (9) - [EMAIL] - Gmail
(57) Inbox | [EMAIL] | Proton Mail
Welcome back
Welcome back
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
Gitea Official Website
Gitea Official Website
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
New Tab
New Tab
MikroTik · CRS304-4XG-IN
MikroTik · CRS304-4XG-IN
New Tab
Customize sidebar
Open Le Chat Mistral (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
971
B/s
350
B/s
Files
Control Panel
Storage
App Center
Logs
Support
Task Manager
Universal Search
Music
Cloud Drives
Theater
Photos
Online Office
TextEdit
Virtual Machine
Downloads
DLNA
File Version Explorer
Security
Jellyfin-HT
SAN Manager
Vault
Snapshot
Comics
Sync & Backup...
|
NULL
|
|
81797
|
NULL
|
0
|
2026-04-26T13:34:50.167133+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-26/1777 /Users/lukas/.screenpipe/data/data/2026-04-26/1777210490167_m2.jpg...
|
Firefox
|
DXP4800PLUS-B5F8 — Personal
|
True
|
nas.lakylak.xyz/desktop/#/
|
monitor_2
|
NULL
|
NULL
|
NULL
|
/Users/lukas/.screenpipe/data/data/2026-04-26/1777 /Users/lukas/.screenpipe/data/data/2026-04-26/1777210490167_m2.jpg...
|
DXP4800PLUS-B5F8
Inbox (9) - [EMAIL] - Gmail
(57) DXP4800PLUS-B5F8
Inbox (9) - [EMAIL] - Gmail
(57) Inbox | [EMAIL] | Proton Mail
Welcome back
Welcome back
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
Gitea Official Website
Gitea Official Website
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
New Tab
New Tab
MikroTik · CRS304-4XG-IN
MikroTik · CRS304-4XG-IN
New Tab
Customize sidebar
Open Le Chat Mistral (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
971
B/s
350
B/s
Files
Control Panel
Storage
App Center
Logs
Support
Task Manager
Universal Search
Music
Cloud Drives
Theater
Photos
Online Office
TextEdit
Virtual Machine
Downloads
DLNA
File Version Explorer
Security
Jellyfin-HT
SAN Manager
Vault
Snapshot
Comics
Sync & Backup...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.50116354,"top":0.0518755,"width":0.03673537,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXRadioButton","text":"Inbox (9) - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.53789896,"top":0.0518755,"width":0.03656915,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"(57) Inbox | kovaliklukas@proton.me | Proton Mail","depth":4,"bounds":{"left":0.5744681,"top":0.0518755,"width":0.03673537,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Welcome back","depth":4,"bounds":{"left":0.4993351,"top":0.09497207,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Welcome back","depth":5,"bounds":{"left":0.51263297,"top":0.10614525,"width":0.025265958,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":4,"bounds":{"left":0.4993351,"top":0.12769353,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":5,"bounds":{"left":0.51263297,"top":0.13886672,"width":0.26263297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Today's Deals","depth":4,"bounds":{"left":0.4993351,"top":0.16041501,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today's Deals","depth":5,"bounds":{"left":0.51263297,"top":0.17158818,"width":0.024102394,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"architecture - screenpipe docs","depth":4,"bounds":{"left":0.4993351,"top":0.19313647,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"architecture - screenpipe docs","depth":5,"bounds":{"left":0.51263297,"top":0.20430966,"width":0.053523935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Code works better when you stop treating it like a machine - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.4993351,"top":0.22585794,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Code works better when you stop treating it like a machine - kovaliklukas@gmail.com - Gmail","depth":5,"bounds":{"left":0.51263297,"top":0.23703113,"width":0.1747008,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.4993351,"top":0.2585794,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.51263297,"top":0.2697526,"width":0.037898935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.4993351,"top":0.29130086,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.51263297,"top":0.30247405,"width":0.040724736,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.4993351,"top":0.32402235,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.51263297,"top":0.33519554,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Platform","depth":4,"bounds":{"left":0.4993351,"top":0.3567438,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Platform","depth":5,"bounds":{"left":0.51263297,"top":0.367917,"width":0.027925532,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":4,"bounds":{"left":0.4993351,"top":0.38946527,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":5,"bounds":{"left":0.51263297,"top":0.40063846,"width":0.09790558,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":4,"bounds":{"left":0.4993351,"top":0.42218676,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":5,"bounds":{"left":0.51263297,"top":0.43335995,"width":0.22556517,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":4,"bounds":{"left":0.4993351,"top":0.45490822,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":5,"bounds":{"left":0.51263297,"top":0.4660814,"width":0.08826463,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.4993351,"top":0.48762968,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - kovaliklukas@gmail.com - Gmail","depth":5,"bounds":{"left":0.51263297,"top":0.49880287,"width":0.28075132,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Gitea Official Website","depth":4,"bounds":{"left":0.4993351,"top":0.5203512,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gitea Official Website","depth":5,"bounds":{"left":0.51263297,"top":0.53152436,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea","depth":4,"bounds":{"left":0.4993351,"top":0.55307263,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea","depth":5,"bounds":{"left":0.51263297,"top":0.5642458,"width":0.10555186,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.4993351,"top":0.5857941,"width":0.113696806,"height":0.032721467},"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.51263297,"top":0.5969673,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"MikroTik · CRS304-4XG-IN","depth":4,"bounds":{"left":0.4993351,"top":0.61851555,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"MikroTik · CRS304-4XG-IN","depth":5,"bounds":{"left":0.51263297,"top":0.62968874,"width":0.046875,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.5021609,"top":0.6528332,"width":0.108211435,"height":0.025538707},"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.5021609,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Le Chat Mistral (⌃X)","depth":6,"bounds":{"left":0.5131317,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.5242686,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.5354056,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.5465425,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"971","depth":15,"bounds":{"left":0.92702794,"top":0.06264964,"width":0.005984043,"height":0.008379889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"B/s","depth":15,"bounds":{"left":0.93301195,"top":0.06304868,"width":0.004155585,"height":0.0075818035},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"350","depth":15,"bounds":{"left":0.92702794,"top":0.07222666,"width":0.005984043,"height":0.008379889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"B/s","depth":15,"bounds":{"left":0.93301195,"top":0.0726257,"width":0.004155585,"height":0.0075818035},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Files","depth":13,"bounds":{"left":0.6359708,"top":0.1707901,"width":0.009973404,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Control Panel","depth":13,"bounds":{"left":0.62682843,"top":0.2697526,"width":0.02825798,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Storage","depth":13,"bounds":{"left":0.6328125,"top":0.36871508,"width":0.016289894,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"App Center","depth":13,"bounds":{"left":0.6291556,"top":0.46767756,"width":0.023603724,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Logs","depth":13,"bounds":{"left":0.6359708,"top":0.5666401,"width":0.009973404,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Support","depth":13,"bounds":{"left":0.6328125,"top":0.66560256,"width":0.016289894,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Task Manager","depth":13,"bounds":{"left":0.6263298,"top":0.76456505,"width":0.02925532,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Universal Search","depth":13,"bounds":{"left":0.62317157,"top":0.86352754,"width":0.03557181,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Music","depth":13,"bounds":{"left":0.68267953,"top":0.1707901,"width":0.012300532,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Cloud Drives","depth":13,"bounds":{"left":0.6755319,"top":0.2697526,"width":0.026595745,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Theater","depth":13,"bounds":{"left":0.68085104,"top":0.36871508,"width":0.015957447,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Photos","depth":13,"bounds":{"left":0.68151593,"top":0.46767756,"width":0.01462766,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online Office","depth":13,"bounds":{"left":0.6753657,"top":0.5666401,"width":0.026928192,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"TextEdit","depth":13,"bounds":{"left":0.6805186,"top":0.66560256,"width":0.01662234,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Virtual Machine","depth":13,"bounds":{"left":0.67287236,"top":0.76456505,"width":0.031914894,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Downloads","depth":13,"bounds":{"left":0.67736036,"top":0.86352754,"width":0.022938829,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DLNA","depth":13,"bounds":{"left":0.73055184,"top":0.1707901,"width":0.012300532,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"File Version Explorer","depth":13,"bounds":{"left":0.7152593,"top":0.2697526,"width":0.04288564,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Security","depth":13,"bounds":{"left":0.72822475,"top":0.36871508,"width":0.016954787,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jellyfin-HT","depth":13,"bounds":{"left":0.7257314,"top":0.46767756,"width":0.021941489,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SAN Manager","depth":13,"bounds":{"left":0.72207445,"top":0.5666401,"width":0.02925532,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Vault","depth":13,"bounds":{"left":0.7315492,"top":0.66560256,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Snapshot","depth":13,"bounds":{"left":0.726895,"top":0.76456505,"width":0.019614361,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Comics","depth":13,"bounds":{"left":0.72888964,"top":0.86352754,"width":0.015625,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync & Backup","depth":13,"bounds":{"left":0.7687833,"top":0.1707901,"width":0.03158245,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8929135535282334838
|
5239161093374888717
|
app_switch
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox (9) - [EMAIL] - Gmail
(57) DXP4800PLUS-B5F8
Inbox (9) - [EMAIL] - Gmail
(57) Inbox | [EMAIL] | Proton Mail
Welcome back
Welcome back
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
Gitea Official Website
Gitea Official Website
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
New Tab
New Tab
MikroTik · CRS304-4XG-IN
MikroTik · CRS304-4XG-IN
New Tab
Customize sidebar
Open Le Chat Mistral (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
971
B/s
350
B/s
Files
Control Panel
Storage
App Center
Logs
Support
Task Manager
Universal Search
Music
Cloud Drives
Theater
Photos
Online Office
TextEdit
Virtual Machine
Downloads
DLNA
File Version Explorer
Security
Jellyfin-HT
SAN Manager
Vault
Snapshot
Comics
Sync & Backup...
|
NULL
|
|
66949
|
1508
|
20
|
2026-04-21T15:18:58.046154+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776784738046_m2.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsRepository.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
1 file committed
JY-18909 change recipients
text/h 1 file committed
JY-18909 change recipients
text/html
text/html
text/html
Edit Commit Message…
Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
whereHas
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
3/3
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"1 file committed","depth":2,"bounds":{"left":0.8753325,"top":0.91300875,"width":0.100398935,"height":0.013567438},"role_description":"text"},{"role":"AXTextField","text":"JY-18909 change recipients","depth":3,"bounds":{"left":0.8753325,"top":0.92897046,"width":0.11037234,"height":0.013567438},"value":"JY-18909 change recipients","help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"bounds":{"left":0.8753325,"top":0.92897046,"width":0.057513297,"height":0.013567438},"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Edit Commit Message…","depth":2,"bounds":{"left":0.8753325,"top":0.9481245,"width":0.048204787,"height":0.013567438},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"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.064494684,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny","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.8218085,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"bounds":{"left":0.83710104,"top":0.019952115,"width":0.078457445,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"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.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"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.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"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.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"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.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.12101064,"top":0.20430966,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.13364361,"top":0.20351157,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"whereHas","depth":4,"bounds":{"left":0.14461437,"top":0.20351157,"width":0.043882977,"height":0.015961692},"value":"whereHas","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.1974734,"top":0.20351157,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.20744681,"top":0.20351157,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.21609043,"top":0.20351157,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.22473404,"top":0.20351157,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3/3","depth":4,"bounds":{"left":0.23836437,"top":0.20271349,"width":0.025598405,"height":0.017557861},"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.26396278,"top":0.2019154,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.27260637,"top":0.2019154,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"bounds":{"left":0.28125,"top":0.2019154,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"bounds":{"left":0.28989363,"top":0.2019154,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"bounds":{"left":0.4870346,"top":0.2019154,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
8928913663492554522
|
-8277259314898286654
|
click
|
hybrid
|
NULL
|
1 file committed
JY-18909 change recipients
text/h 1 file committed
JY-18909 change recipients
text/html
text/html
text/html
Edit Commit Message…
Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
whereHas
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
3/3
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
PhostormcodeFV faVsco.js#11894 on JY-18909-autoiProledey(C) Track.pn*© TranscriptionModel.php© TranscriptionModelLocale.php© TranscriptionProvider.phpC User.pnp© UserSettings.php© Vocabulary.php© VocabularyPronunciation.php© VoiceAccess.phpc Voiceconsentrrerix.ong› C Notifications• _ Ooserversu Policiesu ProvidersC QueueRevositoriesAiAutoScoringC) AccountRenositorv.oho© ContactRepository.php(C) ContactRoleRerositorv.oho© CrmConfigurationRepository.p© CrmEntityRepository.php© FieldDataRepository.php© FieldRepository.php@) LavoutEntityRepository.pnp© LayoutRepository.phpC) LeadRepositony.pnp© OpportunityRepository.php(c) ProfileRenository.ono© RecordTypeFieldValuesReposc stagerepository.onp© SyncBatchRepositorv.php>C GeographyC)ActivestreamsRepositorv.php© ActivityCommentRepository.php© ActivityLoaRepositorv.php© ActivitvMessaqeRepository.php(c) ActivitvMomentReoositorv.onv@ ActivitvProviderRepositorv.ohp(C) ActivitvRenositor.ohoC) ActivitvSearch-ilterRenositorv.oh@ ActivitvShareRenositorv.php(C) ActivitvUoloadSettinaReoositorv.nC) APromotRepositorv.ohv(c) AckAnvthinaRenositorv nhn(c) AutomatedRenortsRenositorv nhi(C) CallimnortRenositorv nhn(C) CoachinaFeedhackRenasitorv nhilC) Service.php© Field.phpC) AutomatedReportsSendcommand.ongC) AutomatedReport.phpQ- whereHasxP Cc W .*1J Y :class Aucomacedkeporcskeposicorypublic function getPaginatedUserReports(userkeporcsortssortReportSortDirection $sortDirection,1ntSresultsPerPagel?carbonSfrombate.arravSteamids.arravsrenortivoes.ostrind sname l•• LenathAwarePaginatorSquerv = AutomatedRenortResult:queruol'automated renort results.deneratedat')'automated renorts!.'automated_report_results.report_id', operator: '=', second: 'automated_reports.id')->where(fn (Builder $q) => Sthis->applyUserAccessScope($q, $user))-SordenRyRawld sol:"Scont->value COLlATS utf8mha unicode cn«Sconthinpction->value..un->select( columns• 'automated nenont nosults *!)-swithd relations: "nenont team!)•if ($fromDate !== null && $toDate !== null) {squery->wnereberween colum"aenenated ati. [Sfromhate Stolatel).if (! empty(SteamIds)) {Squery->where(function ($q) use (SteamIds) {foreach (SteamIds as Sid) {$q->orWhereJsonContains( column:'automated_reports.qroups'. Sid):if (! empty($reportTypes)) {Sauery->whereind co'automated reports tvne'. SreportTvnes)if (! empty($name)) {Sauery->whereLikedc'name' value: "@Sname%"):return $query->paginate($resultsPerPage, ['*'], pageName: 'page', $page);innv |I View null requect (6 minutes aao)= custom.log4 SF [jiminny@localhost] XA HS_local [iminny@localhost)# concole [pponlA console (EU]report-not-generated.blade.phg© SendReportNotGeneratedMailJob.php161A16X7A1A VQ16S— 166=169_173175— 170177178)180181182-183184189188-191192196—109201— 202A console [STAGING]Tys Autoe jiminnyFELECT * FROM activity_searches whereELECT * FROM activity search filtens m 018 414 x2 XC 41 2ach u 7:"ELECT * FROM automated_reports where 1d = 68)IPDATE automated_reports set playbook categories = NULL where id¡ELECT * FROM automated_report_results where id = 275;¡ELECT * FROM automated_reports order by id desc;ELECT * FROM automated_report_results order by id desc;¡elect * from activity_searches where user_id = 143;ielect * from ask_anything_prompts;¡ELECT * FROM groups WHERE id = 1439)ELECT * FROM users WHERE group_id = 1439;ielect * from permissions; # 158elect x tron roleselect * from permission_roleielect * from teams where id = 1:ielect * from groups q JOIN playbooks p 1..n<->1: on g.playbook idielect * from groups where id = 28:ielect * from playbooks where team id = 1:elect * trom playbooks where 10 = 1791ielect * from playbook categories where id = 1391:elect * trom users where 10 = 1451ielect * from crm profiles where user 1d = 145%elect * from activities where erm confiquration id = 39 and tvoend crm orovider id IS NOT NULL ORDER by id desc:elect * from activities where id = 422003: # 00U04000000B6foMACELECT ar.id, ar.uuid, ar.media type, ar.status, a.typeROM automated renont results anOIN automated_reports a ON a.id = ar.report.idTHERE a.type ='ask_jiminnyTMTT 10•HELECTautomated_report_results.* FROMNNEP IOTM 'automatod nonontelMHEps"automated_report_results'.'report_id' = automated_reports"automatod nonont noculte' 'aononatod atlTC MOT MuLIANDautomated reports'.'team_id' = 1AND JSON_CONTAINS('automated_reports'.'recipients'. 1635, '$."y100% S2Tue 21 Apr 18:18:58AutomatedReportsServiceTest ~CascadeReview Planhat IntearAutomated Reports RCalendar Multi-Domal+0..run tests and tix it not oassingdeste/umt/Reposcor/es/Au tona tedheportsReposttorytest.php lest5/inst/Pol1ctes/CanAcCe3sA.Reportstest. php/tects/linit/Policies/GanAcceccAiRenortsTect.ohn 2>61PHPUnit 11.5.55 by Sebastian Beramann and contrilbutors.contiguration: Phome/jiminy/phpunit.xml9 / 453 ( 419A| 453 tests pass (6 ore-existina skiooed. 5 unrelated PHPUnit deprecation notices). No fixes needed.Teal aeAsk anvthina (&4-D+ @ Code Claude Qnus 17 Medium# 1 file committedJY-18909 change recipientsEdit Commit Messaae.211-7UTC.8ih 4 spaces...
|
66948
|
|
61241
|
1320
|
44
|
2026-04-21T06:45:40.365452+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776753940365_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarks< → сProfile FirefoxFileEditViewHistoryBookmarks< → сProfilesToolsWindowHelpmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comDaily - Platform • now100% (4 8• Tue 21 Apr 9:45:4011 [EMAIL] accountLukas KovalikDaily - PlatformAneliya Angelova, Nikolay Ivanov, Nikolay Nikolov and 2 moreare in this call. Use Gemini to take notesShare notes and transcriptStartJoin nowOther ways to join{ MacBook Pro…..4 System Defa...• FaceTime HD...g Backgrounds...Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporaryaccess to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meetinghost can turn it off. Learn more...
|
NULL
|
8928780074003193603
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarks< → сProfile FirefoxFileEditViewHistoryBookmarks< → сProfilesToolsWindowHelpmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comDaily - Platform • now100% (4 8• Tue 21 Apr 9:45:4011 [EMAIL] accountLukas KovalikDaily - PlatformAneliya Angelova, Nikolay Ivanov, Nikolay Nikolov and 2 moreare in this call. Use Gemini to take notesShare notes and transcriptStartJoin nowOther ways to join{ MacBook Pro…..4 System Defa...• FaceTime HD...g Backgrounds...Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporaryaccess to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meetinghost can turn it off. Learn more...
|
61240
|
|
68295
|
1545
|
14
|
2026-04-21T16:51:58.242243+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776790318242_m2.jpg...
|
Firefox
|
SevenShores\Hubspot\Exceptions\BadRequest: Client SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT — Work...
|
True
|
jiminny.sentry.io/issues/7007366572/events/e2eeb46 jiminny.sentry.io/issues/7007366572/events/e2eeb46c105d4d1886b8cac7a2be1377/...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Ask Google Gemini
Platform Sprint 2 Q2 - Platform Ask Google Gemini
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Project Phoenix – Figma
Project Phoenix – Figma
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - jiminny/app
Pipelines - jiminny/app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Search results: calendar | Jiminny Help Center
Search results: calendar | Jiminny Help Center
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Edit - Engineering - Confluence
Edit - Engineering - Confluence
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
Close 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
Toggle organization menu
Issues
Issues
Explore
Explore
Dashboards
Dashboards
Monitors
Monitors
Settings
Settings
Try Business
What's New
Help
[EMAIL]
Issues
Expand
Feed
Feed
Errors & Outages
Errors & Outages
Breached Metrics
Breached Metrics
Warnings
Warnings
User Feedback
User Feedback
All Views
All Views
Configure
Alerts Moved
Alerts
Moved
Issues
Issues
View Project Details
APP-1EED
SevenShores\Hubspot\Exceptions\BadRequest
View events...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Ask Google Gemini","depth":4,"bounds":{"left":0.28773272,"top":0.6057462,"width":0.011303191,"height":0.027134877},"help_text":"","role_description":"button","subrole":"AXUnknown","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.0018284575,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.041888297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.11319814,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.041888297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.041888297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.041888297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"bounds":{"left":0.0,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.08294548,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.30247405,"width":0.02144282,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.08610372,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.367917,"width":0.042719416,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.38946527,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.40063846,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.42218676,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.43335995,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Formalize","depth":4,"bounds":{"left":0.0,"top":0.45490822,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Formalize","depth":5,"bounds":{"left":0.013297873,"top":0.4660814,"width":0.016788565,"height":0.010774142},"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.48762968,"width":0.07962101,"height":0.032721467},"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.013297873,"top":0.49880287,"width":0.09524601,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Search results: calendar | Jiminny Help Center","depth":4,"bounds":{"left":0.0,"top":0.5203512,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search results: calendar | Jiminny Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.53152436,"width":0.080119684,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.55307263,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.5642458,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.5857941,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.5969673,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.61851555,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.62968874,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Edit - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.651237,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Edit - Engineering - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.6624102,"width":0.054853722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira","depth":4,"bounds":{"left":0.0,"top":0.6839585,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.69513166,"width":0.10688165,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":4,"bounds":{"left":0.0,"top":0.71668,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {\"status\":\"error\",\"message\":\"You have reached your secondly limit.\",\"errorType\":\"RATE_LIMIT","depth":5,"bounds":{"left":0.013297873,"top":0.7278532,"width":0.4644282,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.7238627,"width":0.007978723,"height":0.01915403},"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.0028257978,"top":0.7509976,"width":0.07413564,"height":0.025538707},"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.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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":8,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to main content","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Toggle organization menu","depth":11,"bounds":{"left":0.08577128,"top":0.061452515,"width":0.011968086,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues","depth":12,"bounds":{"left":0.07962101,"top":0.096568234,"width":0.024268618,"height":0.051476456},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Issues","depth":14,"bounds":{"left":0.0866024,"top":0.132083,"width":0.010305851,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Explore","depth":12,"bounds":{"left":0.07962101,"top":0.15123703,"width":0.024268618,"height":0.051476456},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Explore","depth":14,"bounds":{"left":0.08577128,"top":0.1867518,"width":0.011968086,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Dashboards","depth":12,"bounds":{"left":0.07962101,"top":0.20590582,"width":0.024268618,"height":0.051077414},"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.08211436,"top":0.2414206,"width":0.019281914,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Monitors","depth":12,"bounds":{"left":0.07962101,"top":0.26496407,"width":0.024268618,"height":0.051476456},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Monitors","depth":14,"bounds":{"left":0.084773935,"top":0.30047885,"width":0.013962766,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"bounds":{"left":0.07962101,"top":0.3196329,"width":0.024268618,"height":0.051476456},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"bounds":{"left":0.08494016,"top":0.35514766,"width":0.013630319,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Try Business","depth":10,"bounds":{"left":0.08577128,"top":0.86751795,"width":0.011968086,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"What's New","depth":10,"bounds":{"left":0.08577128,"top":0.8954509,"width":0.011968086,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Help","depth":10,"bounds":{"left":0.08577128,"top":0.9233839,"width":0.011968086,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"lukas.kovalik@jiminny.com","depth":10,"bounds":{"left":0.08577128,"top":0.9584996,"width":0.011968086,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Issues","depth":13,"bounds":{"left":0.04305186,"top":0.06304868,"width":0.014461436,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":13,"bounds":{"left":0.088597074,"top":0.057861134,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Feed","depth":15,"bounds":{"left":0.039727394,"top":0.0933759,"width":0.058843084,"height":0.028332002},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed","depth":17,"bounds":{"left":0.043716755,"top":0.101356745,"width":0.010638298,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Errors & Outages","depth":15,"bounds":{"left":0.039727394,"top":0.13607343,"width":0.058843084,"height":0.028332002},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Errors & Outages","depth":17,"bounds":{"left":0.043716755,"top":0.14405426,"width":0.03673537,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Breached Metrics","depth":15,"bounds":{"left":0.039727394,"top":0.16440542,"width":0.058843084,"height":0.028731046},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Breached Metrics","depth":17,"bounds":{"left":0.043716755,"top":0.17278531,"width":0.037898935,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Warnings","depth":15,"bounds":{"left":0.039727394,"top":0.19313647,"width":0.058843084,"height":0.028332002},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Warnings","depth":17,"bounds":{"left":0.043716755,"top":0.20111732,"width":0.019946808,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"User Feedback","depth":15,"bounds":{"left":0.039727394,"top":0.22146848,"width":0.058843084,"height":0.028332002},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"User Feedback","depth":17,"bounds":{"left":0.043716755,"top":0.22944932,"width":0.032081116,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"All Views","depth":15,"bounds":{"left":0.039727394,"top":0.264166,"width":0.058843084,"height":0.028332002},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All Views","depth":17,"bounds":{"left":0.043716755,"top":0.27214685,"width":0.019281914,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Configure","depth":14,"bounds":{"left":0.043716755,"top":0.31324822,"width":0.021941489,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Alerts Moved","depth":15,"bounds":{"left":0.039727394,"top":0.3320032,"width":0.058843084,"height":0.029130088},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Alerts","depth":17,"bounds":{"left":0.043716755,"top":0.34038308,"width":0.012799202,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Moved","depth":17,"bounds":{"left":0.080784574,"top":0.3415802,"width":0.012466756,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Issues","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Issues","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View Project Details","depth":13,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP-1EED","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SevenShores\\Hubspot\\Exceptions\\BadRequest","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View events","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
8928649963434297193
|
-5280775950736642941
|
click
|
accessibility
|
NULL
|
Ask Google Gemini
Platform Sprint 2 Q2 - Platform Ask Google Gemini
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Project Phoenix – Figma
Project Phoenix – Figma
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - jiminny/app
Pipelines - jiminny/app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Search results: calendar | Jiminny Help Center
Search results: calendar | Jiminny Help Center
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Edit - Engineering - Confluence
Edit - Engineering - Confluence
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT
Close 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
Toggle organization menu
Issues
Issues
Explore
Explore
Dashboards
Dashboards
Monitors
Monitors
Settings
Settings
Try Business
What's New
Help
[EMAIL]
Issues
Expand
Feed
Feed
Errors & Outages
Errors & Outages
Breached Metrics
Breached Metrics
Warnings
Warnings
User Feedback
User Feedback
All Views
All Views
Configure
Alerts Moved
Alerts
Moved
Issues
Issues
View Project Details
APP-1EED
SevenShores\Hubspot\Exceptions\BadRequest
View events...
|
68293
|